The QuasiQuoter type, a value q of this type can be used
in the syntax [q| ... string to parse ...|]. In fact, for
convenience, a QuasiQuoter actually defines multiple quasiquoters
to be used in different splice contexts; if you are only interested
in defining a quasiquoter to be used for expressions, you would
define a QuasiQuoter with only quoteExp, and leave the other
fields stubbed out with errors.
Constructors
QuasiQuoterquoteExp :: String -> Q ExpQuasi-quoter for expressions, invoked by quotes like
lhs = $[q|...]quotePat :: String -> Q PatQuasi-quoter for patterns, invoked by quotes like
f $[q|...] = rhsquoteType :: String -> Q TypeQuasi-quoter for types, invoked by quotes like
f :: $[q|...]quoteDec :: String -> Q [Dec]Quasi-quoter for declarations, invoked by top-level quotes