Safe Haskell | None |
---|---|

Language | Haskell2010 |

- data DS a
- dsToMaybe :: DS a -> Maybe a
- data Z = Z
- data a ::: b = a ::: b
- class ToInt32 a where
- class ToNatDS a where
- class ToNatListDS a where
- type family Length (xs :: [a]) :: Nat where ...
- type family Elem (e :: a) (xs :: [a]) :: Bool where ...
- type family Relax (a :: DS ka) (b :: DS kb) :: Bool where ...
- type In e xs = Elem e xs ~ True
- type MayRelax a b = Relax a b ~ True
- class All (p :: k -> Constraint) (xs :: [k])
- class PrivateIsStatic ds => IsStatic (ds :: DS a)
- type family DSNat (a :: ka) :: DS Nat where ...
- type family DSNats (a :: ka) :: [DS Nat] where ...

# Kinds and types

data a ::: b infixr 5 Source #

Heterogeneous lists

Implemented as nested 2-tuples.

f :: Int ::: Bool ::: Char ::: Z f = 3 ::: False ::: 'X' ::: Z

a ::: b infixr 5 |

# Type level to value level conversions

class ToNatListDS a where Source #

toNatListDS :: a -> [DS Int32] Source #

ToNatListDS (proxy ([] k)) Source # | |

(ToNatDS (Proxy a1 a2), ToNatListDS (Proxy [a1] as)) => ToNatListDS (Proxy [a1] ((:) a1 a2 as)) Source # | |

# Type functions

## Predicates (constraints)

class All (p :: k -> Constraint) (xs :: [k]) Source #