
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⑈