Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module defines quasiquoters for haskell-src-exts expressions and declarations.
Antiquotations steal the splice syntax of Template Haskell, so for
example example x
appears antiquoted in [$hs| $x ++ $(Hs.strE "bar") |]
.
Expressions appearing inside parenthesized splices are limited to concrete
syntax expressible by Template Haskell's Exp
data type.
Names in patterns can also be antiquoted, using double parentheses. For instance:
let x = Hs.name "n" in [hs| \ ((x)) -> $(Hs.Var (Hs.UnQual x)) + 1 |]
Alternatively, one can use the double underscore syntax, useful when antiquoting a function name as in the following:
let f = "incr" fE = Hs.Var $ Hs.UnQual $ Hs.name f in [hs| let __f__ x = x + 1 in $fE 10 |]
The double parentheses syntax is also used for antiquoting types. For instance:
let typ = Hs.TyCon (Hs.UnQual $ Hs.name "Int") in [hs| 1 :: ((typ)) |]
In a pattern context, antiquotations use the same syntax.
- hs :: QuasiQuoter
- dec :: QuasiQuoter
- decs :: QuasiQuoter
- pat :: QuasiQuoter
- ty :: QuasiQuoter
- hsWithMode :: ParseMode -> QuasiQuoter
- decWithMode :: ParseMode -> QuasiQuoter
- decsWithMode :: ParseMode -> QuasiQuoter
- patWithMode :: ParseMode -> QuasiQuoter
- tyWithMode :: ParseMode -> QuasiQuoter
Documentation
hs :: QuasiQuoter Source
A quasiquoter for expressions. All Haskell extensions known by haskell-src-exts are activated by default.
dec :: QuasiQuoter Source
A quasiquoter for a single top-level declaration.
A quasiquoter for multiple top-level declarations.
pat :: QuasiQuoter Source
A quasiquoter for patterns
ty :: QuasiQuoter Source
A quasiquoter for types. All Haskell extensions known by haskell-src-exts are activated by default.
hsWithMode :: ParseMode -> QuasiQuoter Source
Rather than importing the above quasiquoters, one can create custom
quasiquoters with a customized ParseMode
using this function.
hs = hsWithMode mode dec = decWithMode mode decs = decsWithMode mode
tyWithMode :: ParseMode -> QuasiQuoter Source