<br><font size=2 face="sans-serif">Hello,</font>
<br><tt><font size=2><br>
&gt; In John Hughes's &quot;Programming With Arrows&quot;<br>
&gt; (http://www.cs.chalmers.se/~rjmh/afp-arrows.pdf), he discusses a<br>
&gt; &quot;stream function&quot; type<br>
&gt; newtype SF a b = SF {runSF :: [a] -&gt; [b]}<br>
&gt; and gives<br>
&gt; instance Arrow SF where ....<br>
&gt; He gives some examples using this, and everything seems to go just
fine.<br>
&gt; </font></tt>
<br><tt><font size=2>I believe Hughes also states that it isn't really
an arrow.</font></tt>
<br><tt><font size=2><br>
&gt; But in Ross Patterson's &quot;Arrows and Computation&quot;<br>
&gt; (http://www.soi.city.ac.uk/~ross/papers/fop.html), he says that<br>
&gt; newtype ListMap i o = LM ([i] -&gt; [o])<br>
&gt; is ALMOST an arrow.<br>
&gt; <br>
&gt; Now, I've heard (but never verified) that IO fails to satisfy some<br>
&gt; monad laws, yet here we are, using it as a monad. Is a similar kind
of<br>
&gt; thing going on here? Has anyone hit any snags in using this instance?<br>
&gt; </font></tt>
<br><tt><font size=2>It really isn't an arrow (hint to see why: nothing
forces the length of the input list to match that of the output list) and
thus the arrow laws are not sound for this type. This will be a problem
for you if your compiler attempts to optimize arrow expressions using the
arrow laws (I think, but I'm not sure, that GHC tries to do this when using
arrow notation).</font></tt>
<br>
<br><tt><font size=2>-Jeff</font></tt>
<br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">---</span><br>
<br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">This e-mail may contain confidential and/or privileged information. If you </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">are not the intended recipient (or have received this e-mail in error) </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">please notify the sender immediately and destroy this e-mail. Any </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">unauthorized copying, disclosure or distribution of the material in this </span><br>
<span style="font-family:sans-serif,helvetica; font-size:10pt; color:#000000">e-mail is strictly forbidden.</span><br>