syb-with-class-0.3: Scrap Your Boilerplate With ClassContentsIndex
Data.Generics.SYB.WithClass.Basics
Synopsis
module Data.Typeable
module Data.Generics.SYB.WithClass.Context
data Proxy
class (Typeable a, Sat (ctx a)) => Data ctx a where
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)
dataCast2 :: Typeable2 t => Proxy ctx -> (forall b c . (Data ctx b, Data ctx c) => w (t b c)) -> Maybe (w a)
type GenericT ctx = forall a . Data ctx a => a -> a
gmapT :: Proxy ctx -> GenericT ctx -> GenericT ctx
newtype ID x = ID {
unID :: 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 = Qr {
unQr :: (r -> r)
}
fromConstr :: Data ctx a => Proxy ctx -> Constr -> a
fromConstrB :: Data ctx a => Proxy ctx -> (forall b . Data ctx b => b) -> Constr -> a
fromConstrM :: (Monad m, Data ctx a) => Proxy ctx -> (forall b . Data ctx b => m b) -> Constr -> m a
data DataType = DataType {
tycon :: String
datarep :: DataRep
}
data Constr = Constr {
conrep :: ConstrRep
constring :: String
confields :: [String]
confixity :: Fixity
datatype :: DataType
}
data DataRep
= AlgRep [Constr]
| IntRep
| FloatRep
| StringRep
| NoRep
data ConstrRep
= AlgConstr ConIndex
| IntConstr Integer
| FloatConstr Double
| StringConstr String
type ConIndex = Int
data Fixity
= Prefix
| Infix
dataTypeName :: DataType -> String
dataTypeRep :: DataType -> DataRep
constrType :: Constr -> DataType
constrRep :: Constr -> ConstrRep
repConstr :: DataType -> ConstrRep -> Constr
mkDataType :: String -> [Constr] -> DataType
mkConstr :: DataType -> String -> [String] -> Fixity -> Constr
dataTypeConstrs :: DataType -> [Constr]
constrFields :: Constr -> [String]
constrFixity :: Constr -> Fixity
showConstr :: Constr -> String
readConstr :: DataType -> String -> Maybe Constr
isAlgType :: DataType -> Bool
indexConstr :: DataType -> ConIndex -> Constr
constrIndex :: Constr -> ConIndex
maxConstrIndex :: DataType -> ConIndex
mkIntType :: String -> DataType
mkFloatType :: String -> DataType
mkStringType :: String -> DataType
mkPrimType :: DataRep -> String -> DataType
mkPrimCon :: DataType -> String -> ConstrRep -> Constr
mkIntConstr :: DataType -> Integer -> Constr
mkFloatConstr :: DataType -> Double -> Constr
mkStringConstr :: DataType -> String -> Constr
mkNorepType :: String -> DataType
isNorepType :: DataType -> Bool
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
show/hide 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
Constructors
ID
unID :: 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
Constructors
Qr
unQr :: (r -> r)
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
tycon :: String
datarep :: DataRep
show/hide Instances
data Constr
Representation of constructors
Constructors
Constr
conrep :: ConstrRep
constring :: String
confields :: [String]
confixity :: Fixity
datatype :: DataType
show/hide Instances
data DataRep
Public representation of datatypes
Constructors
AlgRep [Constr]
IntRep
FloatRep
StringRep
NoRep
show/hide Instances
data ConstrRep
Public representation of constructors
Constructors
AlgConstr ConIndex
IntConstr Integer
FloatConstr Double
StringConstr String
show/hide Instances
type ConIndex = Int
Unique index for datatype constructors. | Textual order is respected. Starts at 1.
data Fixity
Fixity of constructors
Constructors
Prefix
Infix
show/hide 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