Skip to content

HaskellZhangSong/TemplateHaskellUtils

Repository files navigation

TemplateHaskellUtils

useful functions for you to write template Haskell code

some examples ** Prettyprint

> runQ [| (1+1) * 5|] >>= pp -- or use > printiQ [| (1+1) * 5|] InfixE (Just InfixE (Just LitE (IntegerL 1)) (VarE (Name (OccName "+") (NameG' VarName (PkgName "base") (ModName "GHC.Num")))) (Just LitE (IntegerL 1))) (VarE (Name (OccName "*") (NameG' VarName (PkgName "base") (ModName "GHC.Num")))) (Just LitE (IntegerL 5)) 

** Other helper functions

-- | Apply a list of expression [(+), 1, 2] to (+) 1 2 appExp :: [ExpQ] -> ExpQ -- | Apply a type constructor, convert [a, b, c] to a b c appConT :: [TypeQ] -> TypeQ -- | convert [a, b, c] to a -> b -> c curryType :: [TypeQ] -> TypeQ 

About

useful functions for you to write template Haskell code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published