What about tuple accessor function for (,,) ... ?
ndmitchell at gmail.com
Wed Apr 25 10:18:22 EDT 2007
> What about
> fstOf3 ( \(x,_,_) -> x )
> sndOf3 ( \(_,x,_) -> x )
> thrdOf3 ( \(_,_,x) -> x )
I have defined "fst3", "snd3", "thd3". I would strongly support adding
them to the standard libraries, in Data.Tuple.
> class Second a b | a -> b where
> t2 :: a -> b
> instance Second (a,b) b where t2 (a,b) = b
> instance Second (a,b,c) b where t2 (a,b,c) = b
> instance Second (a,b,c,d) b where t2 (a,b,c,d) = b
> instance Second (a,b,c,d,e) b where t2 (a,b,c,d,e) = b
I do not think we should encourage this, if people want to do these
kind of tuple tricks, the solution is one of:
1) make tuples inductive (a,(b,c)), then thd = snd . snd
2) use HList (i think this would give you want you need)
3) use records
The Yhc compiler uses 8 element tuples in some places - its not a good
I suspect the use of the 2 element tuple is really common, the 3
element tuple sees a few outings, and the 4 and above element tuple is
a bit of a rarity.
Following the proposal tradition, there about about 100 hits for each
of fst3 etc on Google Code Search. They occur in HaXml, Cabal, Gofer,
Hat, Chameleon, Hoogle, nhc, Yhc etc.
More information about the Libraries