| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Derive.List.Extra
Documentation
saturateT :: Name -> Q Type Source #
saturates a type constructor with type variables. outputs a Type of kind *.
>>>:set -XTemplateHaskell>>>import Language.Haskell.TH>>>$(printQ (saturateT ''Bool))ConT GHC.Types.Bool>>>$(printQ (saturateT ''[]))AppT (ConT GHC.Types.[]) (VarT a)>>>$(printQ (saturateT ''Either))AppT (AppT (ConT Data.Either.Either) (VarT a)) (VarT b)
- - >>> $(printQ (saturateT_ 'False))
- - Exception when trying to run compile-time code:
- - the name {{GHC.Types.False}} has no arity (maybe it's been given to some macro that expects a Type?)
output is deterministic.
alphabeticalVariables :: [String] Source #
>>>take 3 alphabeticalVariables["a","b","c"]
getArityT :: Name -> Q (Maybe Int) Source #
get the arity of a (type) name.
>>>:set -XTemplateHaskell>>>import Language.Haskell.TH>>>$(printQ (getArityT ''Bool))Just 0>>>$(printQ (getArityT 'False))Nothing>>>$(printQ (getArityT ''Either))Just 2
getArityI :: Info -> Maybe Int Source #
get the arity of a type constructor or a primitive type constructor, by name.
getArityD :: Dec -> Maybe Int Source #
get the arity of a data or a newtype.
TODO saturate type synonym0
printQ :: Show a => Q a -> Q Exp Source #
show the result of a Template Haskell action, in IO.
>>>:set -XTemplateHaskell>>>import Language.Haskell.TH>>>$(printQ $ reify ''Bool)TyConI (DataD [] GHC.Types.Bool [] [NormalC GHC.Types.False [],NormalC GHC.Types.True []] [])
works around "Template Haskell error: Can't do ,
which prevents them from being printed directly. reify in the IO monad"
see stackoverflow