chalmers, A graduate course by John Hughes Combinator libraries, nowadays often called Domain Specific Embedded Languages, offer an easy way to provide a customised programming language for a particular application domain. Such a language can greatly simplify applications. The idea of a DSEL is not specific to Haskell, but Haskell is an excellent "host language" to embed a customised language in, and indeed, this approach to programming has a long history in the functional language community. DSELs can be a valuable tool for researchers, because they support "exploratory language design". A researcher can identify appropriate abstractions in the problem domain, and rapidly build a DESL that embodies them to experiment with. This course will explain the combinator library idea, give many examples and applications, and discuss design principles to help you invent your own. We will also discuss research projects in several areas, where a DSEL is a key enabling technology.
An ingenious set of combinators for expressing pattern matching in a type-safe way. No ADTs required. Opens up the possibility of programming languages where we can declare new binding forms just as we declare new functions. abstract: Macros still have not made their way into typed higher-order programming languages such as Haskell and Standard ML. Therefore, to extend the expressiveness of Haskell or Standard ML gradually, one must express new linguistic features in terms of functions that fit within the static type systems of these languages. This is particularly challenging when introducing features that span across multiple types and that bind variables. We address this challenge by developing, in a step-by-step manner, mechanisms for encoding patterns and pattern matching in Haskell in a type-safe way.
Instructions for building under Windows This section gives detailed instructions for how to build GHC from source on your Windows machine. Similar instructions for installing and running GHC may be found in the user guide. Make sure you read the preceding section on platforms before reading section. You don't need Cygwin or MSYS to use GHC, but you do need one or the other to build GHC
Formerly Dr Haskell HLint can only be compiled by GHC 6.10.1 or above (it makes use of view patterns), but does not require any copy of GHC to run. HLint should be able to give hints for any Haskell code, including most GHC extensions
K. Stengel, F. Schmaus, and R. Kapitza. Proceedings of the 12th International Workshop on Adaptive and Reflective Middleware, New York, NY, USA, Association for Computing Machinery, (2013)
N. Danielsson, J. Hughes, P. Jansson, and J. Gibbons. Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, volume 41 of POPL '06, page 206--217. New York, NY, USA, ACM, (January 2006)