On Mon, Mar 07, 2005 at 03:54:07PM +0000, Keean Schupke wrote:
> >Which almost sounds like a hint to replace the current tuples by
> >HLists in Haskell 2? ;)
> >
> >Something like:
> >
> >infixr 5 :*:
> >data HNil = HNil
> >data HList b => a :*: b = a :*: !b deriving (Eq, Ord)
> >
> >-- type () = HNil
> >type (a,b) = a :*: b :*: HNil
> >type (a,b,c) = a :*: b :*: c :*: HNil
> >
> >fst :: HList b => (a :*: b) -> a
> >fst (a:*:b) = a
> >
> >Where (x,y,z) is syntactic sugar for x :*: y :*: z :*: HNil in
> >much the same way [x,y,z] is syntactic sugar for x:y:z:[]...
> >
> >It might even be (almost?) backward compatible AFAICS.
> >
> >Groeten,
> >Remi
> >
> >
> Whilst thats certainly one way to do it, HLists are composed of binary
> products (,)... So this
> works as long as you can imagine: (a,(b,(c,HNil))) == (a,b,c)
If we make the list constructor :*: strict in its second argument
data a :*: b = a :*: !b
then they are isomorphic, no?
John
--
John Meacham - ârepetae.netâjohnâ
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe