| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.HList.HTypeIndexed
Description
The HList library
(C) 2004, Oleg Kiselyov, Ralf Laemmel, Keean Schupke
Type-indexed operations on typeful heterogeneous lists.
- class HType2HNatCase b e l n | b e l -> n
- hType2HNat :: HType2HNat e l n => Proxy e -> l -> Proxy n
- hTypes2HNats :: HTypes2HNats es l ns => Proxy (es :: [*]) -> HList l -> Proxy (ns :: [HNat])
- class HDeleteManyCase b e1 e l l1 | b e1 e l -> l1 where
- hDeleteManyCase :: Proxy b -> Proxy e1 -> e -> HList l -> HList l1
- hDeleteAt :: forall e l n. (HDeleteAtHNat n l, HType2HNat e l n) => Proxy e -> HList l -> HList (HDeleteAtHNatR n l)
- hUpdateAt :: forall n e l. (HUpdateAtHNat n e l, HType2HNat e l n) => e -> HList l -> HList (HUpdateAtHNatR n e l)
- hProjectBy :: forall ns ps l. (HProjectByHNatsCtx ns l, HTypes2HNats ps l ns, ps ~ HProjectByHNatsR ns l) => Proxy ps -> HList l -> HList ps
- hSplitBy :: forall ps l ns. (HProjectByHNatsCtx ns l, HProjectAwayByHNatsCtx ns l, HTypes2HNats ps l ns) => Proxy ps -> HList l -> (HList (HProjectByHNatsR ns l), HList (HProjectAwayByHNatsR ns l))
Documentation
class HType2HNatCase b e l n | b e l -> n Source
Helper class
Instances
| HOccursNot * [*] e l => HType2HNatCase True e l HZero | |
| HType2HNat * [*] e l n => HType2HNatCase False e l (HSucc n) |
hType2HNat :: HType2HNat e l n => Proxy e -> l -> Proxy n Source
hTypes2HNats :: HTypes2HNats es l ns => Proxy (es :: [*]) -> HList l -> Proxy (ns :: [HNat]) Source
class HDeleteManyCase b e1 e l l1 | b e1 e l -> l1 where Source
Instances
| HDeleteMany * e (HList l) (HList l1) => HDeleteManyCase * True e e l l1 | |
| HDeleteMany k e1 (HList l) (HList l1) => HDeleteManyCase k False e1 e l ((:) * e l1) |
hDeleteAt :: forall e l n. (HDeleteAtHNat n l, HType2HNat e l n) => Proxy e -> HList l -> HList (HDeleteAtHNatR n l) Source
hUpdateAt :: forall n e l. (HUpdateAtHNat n e l, HType2HNat e l n) => e -> HList l -> HList (HUpdateAtHNatR n e l) Source
hProjectBy :: forall ns ps l. (HProjectByHNatsCtx ns l, HTypes2HNats ps l ns, ps ~ HProjectByHNatsR ns l) => Proxy ps -> HList l -> HList ps Source
hSplitBy :: forall ps l ns. (HProjectByHNatsCtx ns l, HProjectAwayByHNatsCtx ns l, HTypes2HNats ps l ns) => Proxy ps -> HList l -> (HList (HProjectByHNatsR ns l), HList (HProjectAwayByHNatsR ns l)) Source