| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Constructor.Extract
Description
This package allows _extracting_ constructors from a given ADT.
data MathE = Add MathE MathE | ... $(extractConstructorsOf'MathE defaultOptions) -- ==> The following gets generated, for each constructor data Add = MkAdd MathE MathE instanceExtractedConstructorAdd MathE wherefromEC(MkAdd left right) = Add left righttoECmathE = case mathE of (Add left right) -> Just (MkAdd left right) _ -> Nothing
Synopsis
- extractConstructor :: Name -> ExtractOptions -> DecsQ
- extractConstructorsOf :: Name -> ExtractOptions -> DecsQ
- data ExtractOptions = MkExtractOptions {
- newDataName :: String -> String
- newConName :: String -> String
- deriveClasses :: [Name]
- defaultOptions :: ExtractOptions
- class ExtractedConstructor con ty where
Extract Constructors
extractConstructor :: Name -> ExtractOptions -> DecsQ Source #
Using a constructor's Name, generates a new data type with only this constructor.
extractConstructorsOf :: Name -> ExtractOptions -> DecsQ Source #
Calls extractConstructor for each constructor of the data type whone Name is passed as parameter.
Options
data ExtractOptions Source #
Constructors
| MkExtractOptions | |
Fields
| |