module Utils.TH.DeclForTypes
(
declForTypes
)
where
import Prelude (concat, sequence, map, ($), Monad(..))
import Language.Haskell.TH
declForTypes :: [Q Type] -> (Q Type -> Q [Dec]) -> Q [Dec]
declForTypes :: [Q Type] -> (Q Type -> Q [Dec]) -> Q [Dec]
declForTypes [Q Type]
types Q Type -> Q [Dec]
makeDecl =
do
[[Dec]]
decsList <- forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map Q Type -> Q [Dec]
makeDecl [Q Type]
types
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[Dec]]
decsList