Just to bring up some prior art, from what I&#39;ve heard, F# calls this <font face="courier new, monospace">|&gt;</font>. In Clojure the <font face="courier new, monospace">-&gt;</font> function takes a value and a series of functions, and applies them in order from left to right, e.g. <font face="courier new, monospace">(-&gt; 5 zero? not) ;;=&gt; true</font>. Obviously, In OO languages, this is usually accomplished by chaining calls <font face="courier new, monospace">foo.bar().baz().quux()</font>.<div>

<br></div><div>I agree that Haskell should provide this idiom. I find <font face="courier new, monospace">&amp;</font> to be a strange name for it, but to be honest, it&#39;s no stranger than <font face="courier new, monospace">$</font> so I say go for it. I would suggest <font face="courier new, monospace">|</font> to mimic the unix pipe, but this obviously clashes with Haskell guard syntax. I think <font face="courier new, monospace">|&gt;</font> is a reasonable name, but Data.Sequence has already claimed it.<br>

<br>-- Dan Burton<br><br><br>On Tue, Nov 20, 2012 at 9:59 AM, Yitzchak Gale &lt;<a href="mailto:gale@sefer.org">gale@sefer.org</a>&gt; wrote:<br>&gt;<br>&gt;  It is a common idiom to write a sequence of composed combinators in<br>

&gt;  reverse order to the way they would be written with ($) or (.). That<br>&gt;  naturally expresses the idea of the combinators as operations being<br>&gt;  applied in the given order.<br>&gt;<br>&gt;  This comes up so often, and is commonly used so many times in a single<br>

&gt;  expression, that Control.Arrow.&gt;&gt;&gt; is far too wordy, and even a two-<br>&gt;  character operator is awkward.<br>&gt;<br>&gt;  Surprisingly, until recently the operator (&amp;) was still not used in any<br>
&gt;  of the popular libraries, and its name naturally expresses the idea we are<br>
&gt;  looking for. This operator has now been defined in the lens package. We<br>&gt;  hereby propose to move it to its natural home for more general use,<br>&gt;  Data.Function.<br>&gt;<br>&gt;  As in the lens package, we define the operator as a flipped version of<br>

&gt;  ($), but with slightly higher precedence for better interaction with<br>&gt;  ($), and with left associativity. This definition has already proven<br>&gt;  useful and convenient even in the presence of the large  and varied corpus<br>

&gt;  of combinators and operators in the lens package. (There it was formerly<br>&gt;  known as (%), but that clashed with the usual meaning of (%) from<br>&gt;  Data.Ratio.)<br>&gt;<br>&gt;  infixl 1 &amp;<br>&gt;  (&amp;) :: a -&gt; (a -&gt; b) -&gt; b<br>

&gt;  a &amp; f = f a<br>&gt;  {-# INLINE (&amp;) #-}<br>&gt;<br>&gt; Discussion period: 2 weeks <br>&gt;<br>&gt; <a href="http://hackage.haskell.org/trac/ghc/ticket/7434">http://hackage.haskell.org/trac/ghc/ticket/7434</a><br>

&gt;<br>&gt; Thanks,<br>&gt; Yitz<br>&gt;<br>&gt; _______________________________________________<br>&gt; Libraries mailing list<br>&gt; <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>&gt; <a href="http://www.haskell.org/mailman/listinfo/libraries">http://www.haskell.org/mailman/listinfo/libraries</a><br>

&gt;<br></div>