Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- data HVect ts where
- empty :: HVect []
- null :: HVect as -> Bool
- head :: HVect (t : ts) -> t
- singleton :: a -> HVect `[a]`
- type family HVectElim ts a :: *
- type family Append as bs :: [*]
- (<++>) :: HVect as -> HVect bs -> HVect (Append as bs)
- type family ReverseLoop as bs :: [*]
- type Reverse as = ReverseLoop as []
- reverse :: HVect as -> HVect (Reverse as)
- uncurry :: HVectElim ts a -> HVect ts -> a
- data Rep ts where
- class HasRep ts where
- curryExpl :: Rep ts -> (HVect ts -> a) -> HVectElim ts a
- curry :: HasRep ts => (HVect ts -> a) -> HVectElim ts a
- packExpl :: Rep ts -> (forall a. HVectElim ts a -> a) -> HVect ts
- pack :: HasRep ts => (forall a. HVectElim ts a -> a) -> HVect ts
Documentation
Heterogeneous vector
type family ReverseLoop as bs :: [*] Source
type ReverseLoop ([] *) bs = bs | |
type ReverseLoop ((:) * a as) bs = ReverseLoop as ((:) * a bs) |
type Reverse as = ReverseLoop as [] Source