• Expression example
  • How it works
    • The QuasiQuoter type
    • The Q monad
  • Relationship to Template Haskell

If you do not feel that Haskell’s syntax is suitable for the task at hand, quasi-quotation allows you to write, within your Haskell source code, miniature programs in some other language. When your Haskell program gets compiled, the mini-programs inside it get compiled as well.

Although this concept sounds rather extravagant, many of its applications are quite modest. Some uses of quasi-quotes include:The modern-uri package provides quasi-quoters for writing URLs.

  • Compile-time verification that URL and JSON literals are well-formedThe aeson-qq package provides quasi-quoters for writing JSON.
  • Adding Haskell syntax features likeThe neat-interpolation package provides a quasi-quoter for building strings. string interpolation and multi-line strings.

The QuasiQuotes extensionGHC documentation for QuasiQuotes was introduced in GHC 6.10.1. At that time, quasi-quoters were only supported for expressions and patterns. The feature was expanded in GHC 7.0.1 to also include types and top-level declarations.

Sign up for access to the full page, plus the complete archive and all the latest content.