Safe Haskell | None |
---|---|
Language | Haskell98 |
- data a :*: b = !a :*: !b
- class IsProdList p where
- class IsKeyValues p where
- class IsProdList t => Select n t where
- type Select' n t
- class IsProdList t => Discard n t where
- type Discard' n t
- class (IsProdList m, IsProdList t) => Mask m t where
- type Mask' m t
- data Keep = Keep
- data Drop = Drop
Product type
data a :*: b infixr 9 Source #
A strict product type, written infix.
!a :*: !b infixr 9 |
class IsProdList p where Source #
Sequences of products that form a valid list, using () for the nil value.
isProdList :: p -> Bool Source #
IsProdList () Source # | |
IsProdList fs => IsProdList ((:*:) f fs) Source # | |
class IsKeyValues p where Source #
Sequences of products and tuples that form hetrogeneous key-value pairs.
keys :: p -> [Keys p] Source #
Get a cons-list of all the keys.
values :: p -> Values p Source #
Get a heterogeneous product-list of all the values.
IsKeyValues (k, v) Source # | |
(IsKeyValues p, IsKeyValues ps, (~) * (Keys p) (Keys ps)) => IsKeyValues ((:*:) p ps) Source # | |
Selecting
class IsProdList t => Select n t where Source #
Discarding
class IsProdList t => Discard n t where Source #
Masking
class (IsProdList m, IsProdList t) => Mask m t where Source #
Class of data types that can have parts masked out.
Singleton to indicate a field that should be kept.