| syb-with-class-0.3: Scrap Your Boilerplate With Class | Contents | Index |
|
Data.Generics.SYB.WithClass.Basics |
|
|
|
|
|
Synopsis |
|
|
|
Documentation |
|
module Data.Typeable |
|
module Data.Generics.SYB.WithClass.Context |
|
data Proxy |
|
|
class (Typeable a, Sat (ctx a)) => Data ctx a where |
| 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
|
| | Instances | Sat (ctx Bool) => Data ctx Bool | Sat (ctx Char) => Data ctx Char | Sat (ctx DataType) => Data ctx DataType | Sat (ctx Double) => Data ctx Double | Sat (ctx Float) => Data ctx Float | Sat (ctx Handle) => Data ctx Handle | Sat (ctx Int) => Data ctx Int | Sat (ctx Int16) => Data ctx Int16 | Sat (ctx Int32) => Data ctx Int32 | Sat (ctx Int64) => Data ctx Int64 | Sat (ctx Int8) => Data ctx Int8 | Sat (ctx Integer) => Data ctx Integer | Sat (ctx Ordering) => Data ctx Ordering | Sat (ctx TyCon) => Data ctx TyCon | Sat (ctx TypeRep) => Data ctx TypeRep | Sat (ctx Word) => Data ctx Word | Sat (ctx Word16) => Data ctx Word16 | Sat (ctx Word32) => Data ctx Word32 | Sat (ctx Word64) => Data ctx Word64 | Sat (ctx Word8) => Data ctx Word8 | Sat (ctx ()) => Data ctx () | (Sat (ctx (a, b)), Data ctx a, Data ctx b) => Data ctx (a, b) | (Sat (ctx (a, b, c)), Data ctx a, Data ctx b, Data ctx c) => Data ctx (a, b, c) | (Sat (ctx (a, b, c, d)), Data ctx a, Data ctx b, Data ctx c, Data ctx d) => Data ctx (a, b, c, d) | (Sat (ctx (a, b, c, d, e)), Data ctx a, Data ctx b, Data ctx c, Data ctx d, Data ctx e) => Data ctx (a, b, c, d, e) | (Sat (ctx (a, b, c, d, e, f)), Data ctx a, Data ctx b, Data ctx c, Data ctx d, Data ctx e, Data ctx f) => Data ctx (a, b, c, d, e, f) | (Sat (ctx (a, b, c, d, e, f, g)), Data ctx a, Data ctx b, Data ctx c, Data ctx d, Data ctx e, Data ctx f, Data ctx g) => Data ctx (a, b, c, d, e, f, g) | (Sat (ctx (a -> b)), Data ctx a, Data ctx b) => Data ctx (a -> b) | (Sat (ctx (ForeignPtr a)), Typeable a) => Data ctx (ForeignPtr a) | (Sat (ctx (IO a)), Typeable a) => Data ctx (IO a) | (Sat (ctx (IORef a)), Typeable a) => Data ctx (IORef a) | (Sat (ctx (MVar a)), Typeable a) => Data ctx (MVar a) | (Sat (ctx (Maybe a)), Data ctx a) => Data ctx (Maybe a) | (Sat (ctx (Ptr a)), Typeable a) => Data ctx (Ptr a) | (Sat (ctx (Ratio a)), Data ctx a, Integral a) => Data ctx (Ratio a) | (Sat (ctx (StablePtr a)), Typeable a) => Data ctx (StablePtr a) | (Sat (ctx [a]), Data ctx a) => Data ctx [a] | (Sat (ctx [b]), Sat (ctx (Array a b)), Typeable a, Data ctx b, Data ctx [b], Ix a) => Data ctx (Array a b) | (Sat (ctx (Either a b)), Data ctx a, Data ctx b) => Data ctx (Either a b) | (Sat (ctx (ST s a)), Typeable s, Typeable a) => Data ctx (ST s a) |
|
|
|
type GenericT ctx = forall a . Data ctx a => a -> a |
|
gmapT :: Proxy ctx -> GenericT ctx -> GenericT ctx |
|
newtype ID x |
|
|
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 |
|
|
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 | | Instances | |
|
|
data Constr |
Representation of constructors
| Constructors | | Instances | |
|
|
data DataRep |
Public representation of datatypes
| Constructors | AlgRep [Constr] | | IntRep | | FloatRep | | StringRep | | NoRep | |
| Instances | |
|
|
data ConstrRep |
Public representation of constructors
| Constructors | | Instances | |
|
|
type ConIndex = Int |
Unique index for datatype constructors.
| Textual order is respected. Starts at 1.
|
|
data Fixity |
Fixity of constructors
| Constructors | | Instances | |
|
|
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
|
|
mkPrimCon :: DataType -> String -> ConstrRep -> Constr |
|
mkIntConstr :: DataType -> Integer -> Constr |
|
mkFloatConstr :: DataType -> Double -> Constr |
|
mkStringConstr :: DataType -> String -> Constr |
|
mkNorepType :: String -> DataType |
Constructs a non-representation
|
|
isNorepType :: DataType -> Bool |
Test for a non-representable type
|
|
Produced by Haddock version 0.8 |