module Language.Haskell.TH.All (
module Language.Haskell.TH.All,
module Language.Haskell.TH.Syntax, module Language.Haskell.TH.Peephole,
module Language.Haskell.TH.Helper, module Language.Haskell.TH.FixedPpr,
module Language.Haskell.TH.Data,
module Language.Haskell.TH.SYB
) where
import Language.Haskell.TH.Syntax
import Language.Haskell.TH.Peephole
import Language.Haskell.TH.Helper
import Language.Haskell.TH.FixedPpr
import Language.Haskell.TH.Data
import Language.Haskell.TH.SYB
import Control.Monad
data Derivation = Derivation {
derivationDeriver :: DataDef -> Q [Dec],
derivationName :: String
}
derivation :: (DataDef -> [Dec]) -> String -> Derivation
derivation f = Derivation (return . f)
derivationQ :: (DataDef -> Q [Dec]) -> String -> Derivation
derivationQ = Derivation