{-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Graphics.Cairo.Template where import Language.Haskell.TH mkMemberGen :: Name -> Name -> String -> Integer -> DecsQ mkMemberGen :: Name -> Name -> String -> Integer -> DecsQ mkMemberGen Name t Name c String n Integer v = [Q Dec] -> DecsQ forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t a) forall (m :: * -> *) a. Monad m => [m a] -> m [a] sequence [ Name -> Q Type -> Q Dec forall (m :: * -> *). Quote m => Name -> m Type -> m Dec patSynSigD (String -> Name mkName String n) (Name -> Q Type forall (m :: * -> *). Quote m => Name -> m Type conT Name t), Name -> Q PatSynArgs -> Q PatSynDir -> Q Pat -> Q Dec forall (m :: * -> *). Quote m => Name -> m PatSynArgs -> m PatSynDir -> m Pat -> m Dec patSynD (String -> Name mkName String n) ([Name] -> Q PatSynArgs forall (m :: * -> *). Quote m => [Name] -> m PatSynArgs prefixPatSyn []) ([Q Clause] -> Q PatSynDir forall (m :: * -> *). Quote m => [m Clause] -> m PatSynDir explBidir [[Q Pat] -> Q Body -> [Q Dec] -> Q Clause forall (m :: * -> *). Quote m => [m Pat] -> m Body -> [m Dec] -> m Clause clause [] (Q Exp -> Q Body forall (m :: * -> *). Quote m => m Exp -> m Body normalB (Name -> Q Exp forall (m :: * -> *). Quote m => Name -> m Exp conE Name c Q Exp -> Q Exp -> Q Exp forall (m :: * -> *). Quote m => m Exp -> m Exp -> m Exp `appE` Lit -> Q Exp forall (m :: * -> *). Quote m => Lit -> m Exp litE (Integer -> Lit IntegerL Integer v))) []]) (Name -> [Q Pat] -> Q Pat forall (m :: * -> *). Quote m => Name -> [m Pat] -> m Pat conP Name c [Lit -> Q Pat forall (m :: * -> *). Quote m => Lit -> m Pat litP (Integer -> Lit IntegerL Integer v)]) ]