module Language.Haskell.TH.Hide(export) where import Data.List(partition) import Language.Haskell.TH export :: [Name] -> [Dec] -> Q [Dec] export el = buildClause el . partition whereable where whereable :: Dec -> Bool whereable d = case d of (FunD _ _) -> True (ValD _ _ _) -> True (SigD _ _) -> True (PragmaD _) -> True _ -> False buildClause el (wh,tl) = do v <- valD (tupP [varP n | n <- el]) (normalB $ tupE [varE n | n <- el]) (map return wh) return $ v : tl