-- | 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 -- -- instance 'ExtractedConstructor' Add MathE where -- 'fromEC' (MkAdd left right) = Add left right -- 'toEC' mathE = case mathE of -- (Add left right) -> Just (MkAdd left right) -- _ -> Nothing -- @ module Data.Constructor.Extract ( -- * Extract Constructors extractConstructor, extractConstructorsOf, -- * Options ExtractOptions (..), defaultOptions, -- * Conversion ExtractedConstructor (..), ) where import Data.Constructor.Extract.Class import Data.Constructor.Extract.Options import Data.Constructor.Extract.TH