Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 => proxy1 e -> proxy 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 :: (HDeleteAtHNat n l, HType2HNat * e l n) => proxy1 e -> HList l -> HList (HDeleteAtHNatR n l)
- hUpdateAt :: (HUpdateAtHNat n e l, HType2HNat * e l n) => e -> HList l -> HList (HUpdateAtHNatR n e l)
- hProjectBy :: (HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z, HTypes2HNats [*] k es l ns, Apply (FHUProj True ns) (hlist l, Proxy HNat HZero)) => Proxy [*] es -> hlist l -> HList z
- hSplitBy :: (HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z, HUnfoldFD (FHUProj False ns) (ApplyR (FHUProj False ns) (hlist l, Proxy HNat HZero)) z1, HTypes2HNats [*] k es l ns, Apply (FHUProj True ns) (hlist l, Proxy HNat HZero), Apply (FHUProj False ns) (hlist l, Proxy HNat HZero)) => Proxy [*] es -> hlist l -> (HList z, HList z1)
Documentation
class HType2HNatCase b e l n | b e l -> n Source
Helper class
HOccursNot * e l => HType2HNatCase True e l HZero | |
HType2HNat * e l n => HType2HNatCase False e l (HSucc n) |
hType2HNat :: HType2HNat e l n => proxy1 e -> proxy 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
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 :: (HDeleteAtHNat n l, HType2HNat * e l n) => proxy1 e -> HList l -> HList (HDeleteAtHNatR n l) Source
hUpdateAt :: (HUpdateAtHNat n e l, HType2HNat * e l n) => e -> HList l -> HList (HUpdateAtHNatR n e l) Source
hProjectBy :: (HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z, HTypes2HNats [*] k es l ns, Apply (FHUProj True ns) (hlist l, Proxy HNat HZero)) => Proxy [*] es -> hlist l -> HList z Source
hSplitBy :: (HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z, HUnfoldFD (FHUProj False ns) (ApplyR (FHUProj False ns) (hlist l, Proxy HNat HZero)) z1, HTypes2HNats [*] k es l ns, Apply (FHUProj True ns) (hlist l, Proxy HNat HZero), Apply (FHUProj False ns) (hlist l, Proxy HNat HZero)) => Proxy [*] es -> hlist l -> (HList z, HList z1) Source