tuple component functions
Ketil Z. Malde
ketil@ii.uib.no
03 Jan 2003 12:50:27 +0100
<trb@eastpac.com.au> writes:
> S.D.Mechveliani writes:
>> As Haskell has the standard functions fst, snd to decompose (a,b),
>> maybe, it worths to provide also [...]
> I've found some of these useful, except I named them differently:
>> fst3 :: (a,b,c) -> a
>> snd3 :: (a,b,c) -> b
>> thd3 :: (a,b,c) -> c
> .... never got around to quadruples etc.
I'd like a general 'nth', but of course that would restrict us to
monotyped tuples (e.g.,
nth :: Int -> (a,a,...,a,a) -> a
)
This isn't possible to do more generally with some language extension,
is it?
A better way might be to define classes:
class TwoTuple t a b | t -> a b where
fst :: t -> a
snd :: t -> b
instance TwoTuple (a,b) where ...
class (TwoTuple t) => ThreeTuple t c | t -> c where
thd :: t -> c
instance TwoTuple (a,b,c) where ...
instance ThreeTuple (a,b,c) where ...
--and so on.
Quite verbose, but avoids the need to tag the functions with the tuple
size.
-kzm
--
If I haven't seen further, it is by standing in the footprints of giants