module Language.Haskell.DTC.Mod
( modifyHsDecls
, unBangType
, tyVarName
, modifyHsName
) where
import Language.Haskell.Exts
modifyHsDecls :: ([Decl] -> [Decl]) -> (Module -> Module)
modifyHsDecls f (Module loc m pr w es is decls) = Module loc m pr w es is $ f decls
unBangType :: BangType -> Type
unBangType (BangedTy x) = x
unBangType (UnBangedTy x) = x
unBangType (UnpackedTy x) = x
tyVarName :: TyVarBind -> Name
tyVarName (KindedVar n _) = n
tyVarName (UnkindedVar n) = n
modifyHsName :: (String -> String) -> (Name -> Name)
modifyHsName f (Ident x) = Ident $ f x
modifyHsName f (Symbol x) = Symbol $ f x