syb-with-class-0.6.1.7: Scrap Your Boilerplate With Class

Safe HaskellNone
LanguageHaskell98

Data.Generics.SYB.WithClass.Basics

Synopsis

Documentation

data Proxy a #

class (Typeable a, Sat (ctx a)) => Data ctx a where #

Minimal complete definition

toConstr

Methods

gfoldl :: Proxy ctx -> (forall b c. Data ctx b => w (b -> c) -> b -> w c) -> (forall g. g -> w g) -> a -> w a #

gunfold :: Proxy ctx -> (forall b r. Data ctx b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a #

toConstr :: Proxy ctx -> a -> Constr #

dataTypeOf :: Proxy ctx -> a -> DataType #

dataCast1 :: Typeable1 t => Proxy ctx -> (forall b. Data ctx b => w (t b)) -> Maybe (w a) #

Mediate types and unary type constructors

dataCast2 :: Typeable2 t => Proxy ctx -> (forall b c. (Data ctx b, Data ctx c) => w (t b c)) -> Maybe (w a) #

Mediate types and binary type constructors

type GenericT ctx = forall a. Data ctx a => a -> a #

gmapT :: Proxy ctx -> GenericT ctx -> GenericT ctx #

newtype ID x #

Constructors

ID 

Fields

type GenericM m ctx = forall a. Data ctx a => a -> m a #

gmapM :: Monad m => Proxy ctx -> GenericM m ctx -> GenericM m ctx #

type GenericQ ctx r = forall a. Data ctx a => a -> r #

gmapQ :: Proxy ctx -> GenericQ ctx r -> GenericQ ctx [r] #

gmapQr :: Data ctx a => Proxy ctx -> (r' -> r -> r) -> r -> GenericQ ctx r' -> a -> r #

newtype Qr r a #

Constructors

Qr 

Fields

fromConstr :: Data ctx a => Proxy ctx -> Constr -> a #

Build a term skeleton

fromConstrB :: Data ctx a => Proxy ctx -> (forall b. Data ctx b => b) -> Constr -> a #

Build a term and use a generic function for subterms

fromConstrM :: (Monad m, Data ctx a) => Proxy ctx -> (forall b. Data ctx b => m b) -> Constr -> m a #

Monadic variation on "fromConstrB"

data DataType #

Representation of datatypes. | A package of constructor representations with names of type and module. | The list of constructors could be an array, a balanced tree, or others.

Constructors

DataType 

Fields

Instances

data Constr #

Representation of constructors

Instances

Eq Constr #

Equality of constructors

Methods

(==) :: Constr -> Constr -> Bool #

(/=) :: Constr -> Constr -> Bool #

Show Constr # 

data DataRep #

Public representation of datatypes

Instances

data ConstrRep #

Public representation of constructors

type ConIndex = Int #

Unique index for datatype constructors. | Textual order is respected. Starts at 1.

data Fixity #

Fixity of constructors

Constructors

Prefix 
Infix 

Instances

Eq Fixity # 

Methods

(==) :: Fixity -> Fixity -> Bool #

(/=) :: Fixity -> Fixity -> Bool #

Show Fixity # 

dataTypeName :: DataType -> String #

Gets the type constructor including the module

dataTypeRep :: DataType -> DataRep #

Gets the public presentation of datatypes

constrType :: Constr -> DataType #

Gets the datatype of a constructor

constrRep :: Constr -> ConstrRep #

Gets the public presentation of constructors

repConstr :: DataType -> ConstrRep -> Constr #

Look up a constructor by its representation

mkDataType :: String -> [Constr] -> DataType #

Constructs an algebraic datatype

mkConstr :: DataType -> String -> [String] -> Fixity -> Constr #

Constructs a constructor

dataTypeConstrs :: DataType -> [Constr] #

Gets the constructors

constrFields :: Constr -> [String] #

Gets the field labels of a constructor

constrFixity :: Constr -> Fixity #

Gets the fixity of a constructor

showConstr :: Constr -> String #

Gets the string for a constructor

readConstr :: DataType -> String -> Maybe Constr #

Lookup a constructor via a string

isAlgType :: DataType -> Bool #

Test for an algebraic type

indexConstr :: DataType -> ConIndex -> Constr #

Gets the constructor for an index

constrIndex :: Constr -> ConIndex #

Gets the index of a constructor

maxConstrIndex :: DataType -> ConIndex #

Gets the maximum constructor index

mkIntType :: String -> DataType #

Constructs the Int type

mkFloatType :: String -> DataType #

Constructs the Float type

mkStringType :: String -> DataType #

Constructs the String type

mkPrimType :: DataRep -> String -> DataType #

Helper for mkIntType, mkFloatType, mkStringType

mkNorepType :: String -> DataType #

Constructs a non-representation

isNorepType :: DataType -> Bool #

Test for a non-representable type