X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Data%2FHList.hs;h=3a0470230f5bc342041868d384a44830c2b59128;hb=d07e35733d4f0994a12202164c9065aef1fe98f4;hp=77ad6cc7e724fa1a2641fa1d451bd9abbe1d7f8b;hpb=001f802dc89427aebb285f4e3a8b09be1120248f;p=hs-rrdtool.git diff --git a/Data/HList.hs b/Data/HList.hs index 77ad6cc..3a04702 100644 --- a/Data/HList.hs +++ b/Data/HList.hs @@ -1,75 +1,6 @@ module Data.HList - ( HList - , HNil(..) - , hNil - , HCons(..) - , hCons - - , HExtendable(..) - , HAppendable(..) - - , (:*:) - , (.*.) + ( module Data.HList.Prelude ) where -import Data.Typeable - --- HList -class HList l - --- HNil -data HNil - = HNil - deriving (Show, Eq, Ord, Read, Typeable) - -instance HList HNil - -hNil :: HNil -hNil = HNil - --- HCons -data HCons e l - = HCons e l - deriving (Show, Eq, Ord, Read, Typeable) - -instance HList l => HList (HCons e l) - -hCons :: HList l => e -> l -> HCons e l -hCons = HCons - --- HExtendable -class HExtendable e l where - type HExtend e l - hExtend :: e -> l -> HExtend e l - -instance HExtendable e HNil where - type HExtend e HNil = HCons e HNil - hExtend e nil = hCons e nil - -instance HList l => HExtendable e (HCons e' l) where - type HExtend e (HCons e' l) = HCons e (HCons e' l) - hExtend e (HCons e' l) = hCons e (hCons e' l) - --- HAppendable -class HAppendable l l' where - type HAppend l l' - hAppend :: l -> l' -> HAppend l l' - -instance HList l => HAppendable HNil l where - type HAppend HNil l = l - hAppend _ l = l - -instance (HAppendable l l', - HList (HAppend l l')) => HAppendable (HCons e l) l' where - type HAppend (HCons e l) l' = HCons e (HAppend l l') - hAppend (HCons e l) l' = hCons e (hAppend l l') - --- :*: -infixr 2 :*: -infixr 2 .*. - -type e :*: l = HCons e l - -(.*.) :: HExtendable e l => e -> l -> HExtend e l -e .*. l = hExtend e l +import Data.HList.Prelude