module Data.DeriveDSL(DSL, deriveDSL, applyDSL, dynamicDSL) where import Data.Derive.DSL.Derive import Data.Derive.DSL.Apply import Data.Derive.DSL.DSL import Data.Derive.DSL.HSE import Data.Derive.DSL.SYB import Data.Maybe deriveDSL :: [Decl] -> Maybe DSL deriveDSL = listToMaybe . derive applyDSL :: DSL -> DataDecl -> Either String [Decl] applyDSL dsl inp = Right $ apply dsl $ toInput inp dynamicDSL :: DSL -> Maybe [Decl] dynamicDSL = dslSYB