a conceptually simple but crucial extension
QuasiQuotes allow you to drop arbitrary text inside
|] brackets, where
foo names your
foothing = [foo| Here I can put anything I want as long as it isn't a '|' immediately followed by a ']'. The String will be fed through the 'foo' function at *compile time*, which can reject the input to force a compilation error, or generate some Haskell abstract syntax tree that will be compiled and used in place of the quasi quote. They are in effect a way to package up user-defined literals which may implement arbitrary DSLs. |]
The magic is explained in Quasiquotation 101.
Got an issue with any of this? Please share or drop me a line (see below).