Proposal: Num instance for tuples

Simon Hengel sol at typeful.net
Thu Oct 18 12:25:12 CEST 2012


On Thu, Oct 18, 2012 at 11:58:17AM +0200, Twan van Laarhoven wrote:
> Dear list,
> 
> 
> One piece of utility code that I find myself writing over and over
> again is the pointwise Num instance for tuples, i.e.
> 
>     instance (Num a, Num b) => Num (a,b) where
>         fromInteger x = (fromInteger x, fromInteger x)
>         (a,b) + (a',b') = (a + a', b + b')
>         (a,b) - (a',b') = (a - a', b - b')
>         (a,b) * (a',b') = (a * a', b * b')
>         negate (a,b) = (negate a, negate b)
>         abs (a,b) = (abs a, abs b)
>         signum (a,b) = (signum a, signum b)
> 
> I therefore propose that this instance be added to the base library.
> If we do that, the equivalent instances for (,,) (,,,) etc. should
> perhaps also be added, as well as instances for other numeric
> classes such as Fractional and Floating.

While I see *some* value in being able to perform addition, etc. on
tuples, I still think that e.g. something like

    fst (2 :: Point) 
    
can easily lead to code obfuscation.

For that reason, -1.

Cheers,
Simon



More information about the Libraries mailing list