| License | BSD |
|---|---|
| Maintainer | sweirich@cis.upenn.edu |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Generics.RepLib.R
Description
Basic data structure and class for representation types
Synopsis
- data R a where
- Int :: R Int
- Char :: R Char
- Integer :: R Integer
- Float :: R Float
- Double :: R Double
- Rational :: R Rational
- IOError :: R IOError
- IO :: Rep a => R a -> R (IO a)
- Arrow :: (Rep a, Rep b) => R a -> R b -> R (a -> b)
- Data :: DT -> [Con R a] -> R a
- Abstract :: DT -> R a
- Equal :: (Rep a, Rep b) => R a -> R b -> R (a :~: b)
- data Con r a where
- data Emb l a = Emb {}
- data Fixity
- data DT = DT String (MTup R l)
- data Nil = Nil
- data a :*: l = a :*: l
- data MTup r l where
- class Rep a where
- withRep :: R a -> (Rep a => r) -> r
- rUnitEmb :: Emb Nil ()
- rUnit :: R ()
- rTup2 :: forall a b. (Rep a, Rep b) => R (a, b)
- rPairEmb :: Emb (a :*: (b :*: Nil)) (a, b)
- rList :: forall a. Rep a => R [a]
- rNilEmb :: Emb Nil [a]
- rConsEmb :: Emb (a :*: ([a] :*: Nil)) [a]
Documentation
A value of type R a is a representation of a type a.
Constructors
| Int :: R Int | |
| Char :: R Char | |
| Integer :: R Integer | |
| Float :: R Float | |
| Double :: R Double | |
| Rational :: R Rational | |
| IOError :: R IOError | |
| IO :: Rep a => R a -> R (IO a) | |
| Arrow :: (Rep a, Rep b) => R a -> R b -> R (a -> b) | |
| Data :: DT -> [Con R a] -> R a | |
| Abstract :: DT -> R a | |
| Equal :: (Rep a, Rep b) => R a -> R b -> R (a :~: b) |
Representation of a data constructor includes an embedding between the datatype and a list of other types as well as the representation of that list of other types.
An embedding between a list of types l and
a datatype a, based on a particular data constructor.
The to function is a wrapper for the constructor, the
from function pattern matches on the constructor.
Information about a datatype, including its fully qualified name and representation of its type arguments.
A heterogeneous list
A class of representable types
Minimal complete definition