q package:template-haskell

In short, Q provides the Quasi operations in one neat monad for the user. The longer story, is that Q wraps an arbitrary Quasi-able monad. The perceptive reader notices that Quasi has only two instances, Q itself and IO, neither of which have concrete implementations.Q plays the trick of dependency inversion, providing an abstract interface for the user which is later concretely fufilled by an concrete Quasi instance, internal to GHC.
In short, Q provides the Quasi operations in one neat monad for the user. The longer story, is that Q wraps an arbitrary Quasi-able monad. The perceptive reader notices that Quasi has only two instances, Q itself and IO, neither of which have concrete implementations.Q plays the trick of dependency inversion, providing an abstract interface for the user which is later concretely fufilled by an concrete Quasi instance, internal to GHC.
Quasi-quoter for declarations, invoked by top-level quotes
Quasi-quoter for expressions, invoked by quotes like lhs = $[q|...]
quoteFile takes a QuasiQuoter and lifts it into one that read the data out of a file. For example, suppose asmq is an assembly-language quoter, so that you can write [asmq| ld r1, r2 |] as an expression. Then if you define asmq_f = quoteFile asmq, then the quote [asmq_f|foo.s|] will take input from file "foo.s" instead of the inline text
Quasi-quoter for patterns, invoked by quotes like f $[q|...] = rhs
Quasi-quoter for types, invoked by quotes like f :: $[q|...]
See getDoc.
See getQ.
See location.
True = type namespace, False = value namespace. See lookupName.
Fresh names. See newName.