Data.Tuple impoverished

Henning Thielemann lemming at
Fri Jun 15 14:48:21 CEST 2012

On Fri, 15 Jun 2012, Ivan Lazar Miljenovic wrote:

> On 15 June 2012 17:59, Andreas Abel <andreas.abel at> wrote:
>> Hi,
>> the module Data.Tuple offers a sad collection of 5 functions.  Many standard
>> functions are missing.  For instance, I'd expect all the functions of
>>  Data.Tuple.HT  (package utility-th)
>> to be part of Data.Tuple, which are
>>  mapPair :: (a -> c, b -> d) -> (a, b) -> (c, d)
>>  mapFst :: (a -> c) -> (a, b) -> (c, b)
>>  mapSnd :: (b -> c) -> (a, b) -> (a, c)
> I believe these are covered by Control.Arrow...

Yes, they are covered by 'first', 'second' and '***'. But I decided to 
implement them in Data.Tuple.HT because I think that the use of the pair 
type in 'first' and friends is not the focus of the arrow functions. It 
would be easy for me to add mapFst3, mapSnd3.

>>  -- swap :: (a, b) -> (b, a)  -- swap is present in Data.Tuple

I have also added such functions in order to allow people to write code 
that works for many different GHC and 'base' versions.

>> P.S.: I have reimplemented all these functions for myself, because I use
>> them, but I am puzzled why they are not in the standard library.

You can import my package without having to regret. I promise not to add 
new dependencies and that it will remain Haskell 98.

More information about the Libraries mailing list