----------------------------------------------------------------------------- -- | -- Module : Generics.Regular -- Copyright : (c) 2008 Universiteit Utrecht -- License : BSD3 -- -- Maintainer : generics@haskell.org -- Stability : experimental -- Portability : non-portable -- -- Summary: Top-level module for this library. -- By importing this module, the user is able to use all the generic -- functionality. The user is only required to provide an instance of -- @Regular@ for the datatype. -- -- Consider a datatype representing logical expressions: -- -- > data Logic = Var String -- > | Logic :->: Logic -- implication -- > | Logic :<->: Logic -- equivalence -- > | Logic :&&: Logic -- and (conjunction) -- > | Logic :||: Logic -- or (disjunction) -- > | Not Logic -- not -- > | T -- true -- > | F -- false -- -- An instance of @Regular@ is derived with TH by invoking: -- -- > $(deriveConstructors ''Logic) -- > $(deriveRegular ''Logic "PFLogic") -- > type instance PF Logic = PFLogic -- ----------------------------------------------------------------------------- module Generics.Regular ( module Generics.Regular.Base, module Generics.Regular.Functions, module Generics.Regular.TH ) where import Generics.Regular.Base import Generics.Regular.Functions import Generics.Regular.TH