
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