I use these instances and similar ones from NumInstances [1] quite a bit. I also frequently use another pattern for applicative functors, via applicative-numbers [2]. I don&#39;t mind pulling these instances from a package, though they are orphans.<br>

<br>It does trouble me a bit that the two patterns overlap and disagree on pairs.<br><br>For pairs, I like fromInteger n = (fromInteger n, fromInteger n). Then, for instance, 1 * (a,b) = (a,b).<br><br>-- Conal<br><br>[1] <a href="http://hackage.haskell.org/package/NumInstances">http://hackage.haskell.org/package/NumInstances</a><br>

[2] <a href="http://hackage.haskell.org/package/applicative-numbers">http://hackage.haskell.org/package/applicative-numbers</a><br><br><div class="gmail_quote">On Thu, Oct 18, 2012 at 2:58 AM, Twan van Laarhoven <span dir="ltr">&lt;<a href="mailto:twanvl@gmail.com" target="_blank">twanvl@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear list,<br>
<br>
<br>
One piece of utility code that I find myself writing over and over again is the pointwise Num instance for tuples, i.e.<br>
<br>
    instance (Num a, Num b) =&gt; Num (a,b) where<br>
        fromInteger x = (fromInteger x, fromInteger x)<br>
        (a,b) + (a&#39;,b&#39;) = (a + a&#39;, b + b&#39;)<br>
        (a,b) - (a&#39;,b&#39;) = (a - a&#39;, b - b&#39;)<br>
        (a,b) * (a&#39;,b&#39;) = (a * a&#39;, b * b&#39;)<br>
        negate (a,b) = (negate a, negate b)<br>
        abs (a,b) = (abs a, abs b)<br>
        signum (a,b) = (signum a, signum b)<br>
<br>
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.<br>


<br>
<br>
Discussion period: 2 weeks, ends 2012-11-01.<br>
<br>
<br>
Twan<br>
<br>
______________________________<u></u>_________________<br>
Cvs-ghc mailing list<br>
<a href="mailto:Cvs-ghc@haskell.org" target="_blank">Cvs-ghc@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/cvs-ghc" target="_blank">http://www.haskell.org/<u></u>mailman/listinfo/cvs-ghc</a><br>
</blockquote></div><br>