<div>Just expand out the function composition:</div>
<div>&nbsp;&nbsp;&nbsp; Dual . Endo . flip f =&nbsp;(\x -&gt; Dual (Endo (flip f x)))</div>
<div>which has the type d -&gt; Dual (Endo c).</div>
<div>&nbsp;</div>
<div>&nbsp; -- ryan</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><span class="gmail_quote">On 8/26/07, <b class="gmail_sendername">Levi Stephen</b> &lt;<a href="mailto:levi.stephen@optusnet.com.au">levi.stephen@optusnet.com.au</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi,<br><br>I was browsing through the source code for Data.Foldable and having trouble<br>comprehending it (which was kind of the point of browsing the code, so I could
<br>learn something ;) )<br><br>I&#39;m looking at foldl<br><br>foldl :: (c -&gt; d -&gt; c) -&gt; c -&gt; t d -&gt; c<br>foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z<br><br>But, I haven&#39;t got very far. I&#39;m still trying to follow:
<br><br>Endo . flip f<br><br>f is of type c-&gt;d-&gt;c, so this makes flip f of type d-&gt;c-&gt;c.<br><br>I think the Endo constructor is of type (a-&gt;a)-&gt;Endo a<br><br>I think a is binding to a function type here, but can not work out what.
<br><br>(From memory) ghci reports<br><br>&gt; :t Endo . flip (+)<br>Num a =&gt; a -&gt; Endo a<br><br>So, this looks like a partial application of the constructor?<br><br>But, this still isn&#39;t helping me understand.<br>
<br>Any thoughts or pointers that might help me comprehend what&#39;s happening?<br><br>Thanks,<br>Levi<br><a href="http://lstephen.wordpress.com">lstephen.wordpress.com</a><br>_______________________________________________
<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe
</a><br></blockquote></div><br>