Safe Haskell | None |
---|---|
Language | Haskell2010 |
Miscellaneous Template Haskell utilities, added as needed by packages in the th-utilities repo and elsewhere.
Documentation
unAppsT :: Type -> [Type] Source
Breaks a type application like A b c
into [A, b, c]. In other
words, it descends leftwards down AppT
constructors, and yields a
list of the results.
expectTyCon1 :: Name -> Type -> Q Type Source
Expect the provided type to be an application of a regular type to
one argument, otherwise fail with a message. This will also work if
the name is a promoted data constructor (PromotedT
).
expectTyCon2 :: Name -> Type -> Q (Type, Type) Source
Expect the provided type to be an application of a regular type to
two arguments, otherwise fail with a message. This will also work if
the name is a promoted data constructor (PromotedT
).
dequalify :: Name -> Name Source
Construct a plain name (mkName
) based on the given name. This is
useful for cases where TH doesn't expect a unique name.
Hack to enable putting expressions inside lift
-ed TH data. For
example, you could do
main = print $(lift [ExpLifter [e| 1 + 1 |], ExpLifter [e| 2 |]])
Without ExpLifter
, lift
tends to just generate code involving
data construction. With ExpLifter
, you can put more complicated
expression into this construction.