<div dir="ltr"><div>I am looking at the proc notation de-sugar and I see results like this when using a Free Arrow (mostly copied from [1]):<br></div><div><div>line2 = proc n -> do</div><div>  Effect getURLSum *** Effect getURLSum -< n</div></div><div><pre class="" style="font-family:'ubuntu mono',consolas,monaco,monospace;font-size:14px;white-space:pre-wrap;min-height:2em;padding:0px 0.5em;overflow:hidden;word-wrap:break-word;border-color:rgb(88,88,88);color:rgb(248,248,242);background:rgb(53,53,44)"><span class="" style="padding:0.5em 0px 0px 0.5em">Seq [Pure ] (Seq [Pure ] (Seq [Pure ] (Seq [Pure ](Par <Effect > {Effect } ) ) ) )</span></pre></div><div>while this is so much simpler:</div><div>line2 = Effect getURLSum *** Effect getURLSum <br></div><div><pre class="" style="font-family:'ubuntu mono',consolas,monaco,monospace;font-size:14px;white-space:pre-wrap;min-height:2em;padding:0px 0.5em;overflow:hidden;word-wrap:break-word;border-color:rgb(88,88,88);color:rgb(248,248,242);background:rgb(53,53,44)"><span class="" style="padding:0.5em 0px 0px 0.5em">Par <Effect > {Effect }</span></pre></div><div>Those `Seq [Pure ]` sequences come from application of (.) and I have noticed many similar inefficiencies in the Arrow preprocessor. Eventually the goal would be to optimize when possible, for example I started looking into this in order to use `concurrently` for (***) when in IO.</div><div><br></div><div>There was a rewrite mentioned here [2]. The deSugar/DsArrows.hs [3] looks convoluted. Any progress or work needed? Or are Arrows not used much and not worth the effort?</div><div><br></div><div>[1]<a href="http://stackoverflow.com/questions/12001350/useful-operations-on-free-arrows">http://stackoverflow.com/questions/12001350/useful-operations-on-free-arrows</a></div><div>[2]<a href="https://mail.haskell.org/pipermail/haskell-cafe/2013-August/109795.html">https://mail.haskell.org/pipermail/haskell-cafe/2013-August/109795.html</a><br></div><div>[3]<a href="https://github.com/ghc/ghc/blob/master/compiler/deSugar/DsArrows.hs">https://github.com/ghc/ghc/blob/master/compiler/deSugar/DsArrows.hs</a></div><div><br></div><div>-Tom</div></div>