We, at Anygma, noticed that a and b below have different behavior:<br><pre class="haskell haskell" style="font-family: monospace;">a<span style="color: rgb(51, 153, 51); font-weight: bold;">,</span> b <span style="color: rgb(51, 153, 51); font-weight: bold;">::</span> <span style="color: green;">(</span>Int<span style="color: rgb(51, 153, 51); font-weight: bold;">-&gt;</span>Int<span style="color: green;">)</span> <span style="color: rgb(51, 153, 51); font-weight: bold;">-&gt;</span> <span style="color: green;">(</span><span style="color: rgb(204, 204, 0); font-weight: bold;">Int</span><span style="color: rgb(51, 153, 51); font-weight: bold;">,</span><span style="color: rgb(204, 204, 0); font-weight: bold;">Int</span><span style="color: green;">)</span> <span style="color: rgb(51, 153, 51); font-weight: bold;">-&gt;</span> <span style="color: green;">(</span><span style="color: rgb(204, 204, 0); font-weight: bold;">Int</span><span style="color: rgb(51, 153, 51); font-weight: bold;">,</span><span style="color: rgb(204, 204, 0); font-weight: bold;">Int</span><span style="color: green;">)</span><br>
a <span style="color: rgb(51, 153, 51); font-weight: bold;">=</span> <span style="font-weight: bold;">fmap</span><br>b <span style="color: rgb(51, 153, 51); font-weight: bold;">=</span> second</pre>See the blog post at <a href="http://netsuperbrain.com/blog/?p=74">http://netsuperbrain.com/blog/?p=74</a>.<br>
<br>The standard instances for Functor, Monad, and Applicative for tuples is strict. The Arrow on (-&gt;) when applied to tuples with first and second, however is non-strict.<br><br>It is a subtle discrepancy, but it does make a difference for FRP when deriving these standard instances. Any objections to making the Functor, Monad, and Applicative instances for tuples non-strict like Arrows?<br>
<br>David<br>