24 deriving (Show, Eq, Ord, Read, Typeable)
34 deriving (Show, Eq, Ord, Read, Typeable)
36 instance HList l => HList (HCons e l)
38 hCons :: HList l => e -> l -> HCons e l
42 class HExtendable e l where
44 hExtend :: e -> l -> HExtend e l
46 instance HExtendable e HNil where
47 type HExtend e HNil = HCons e HNil
48 hExtend e nil = hCons e nil
50 instance HList l => HExtendable e (HCons e' l) where
51 type HExtend e (HCons e' l) = HCons e (HCons e' l)
52 hExtend e (HCons e' l) = hCons e (hCons e' l)
55 class HAppendable l l' where
57 hAppend :: l -> l' -> HAppend l l'
59 instance HList l => HAppendable HNil l where
60 type HAppend HNil l = l
63 instance (HAppendable l l',
64 HList (HAppend l l')) => HAppendable (HCons e l) l' where
65 type HAppend (HCons e l) l' = HCons e (HAppend l l')
66 hAppend (HCons e l) l' = hCons e (hAppend l l')
72 type e :*: l = HCons e l
74 (.*.) :: HExtendable e l => e -> l -> HExtend e l