<div dir="ltr"><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 13, 2015 at 12:49 AM, Martin Vlk <span dir="ltr"><<a href="mailto:martin@vlkk.cz" target="_blank">martin@vlkk.cz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":1bm" class="a3s" style="overflow:hidden">
I'm curious if this could be for the sake of making the types of the two<br>
functions (foldr/foldl) different? E.g. so that you can tell from the<br>
type what function it is.</div></blockquote></div><br></div><div class="gmail_extra">No, that would be foolish. One doesn't simply make the types different to distinguish them.<br><br></div><div class="gmail_extra">Suppose the elements are already naturally foldable. Then foldr and foldl have the same type signature:<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">foldl, foldr :: (a -> a -> a) -> a -> [a] -> a<br><br></div>But sometimes they are only foldable qua another type. Call it r. If you work through Harald's reasoning, you'll arrive at:<br><br></div>foldr :: (a -> r -> r) -> r -> [a] -> r<br></div>foldl :: (r -> a -> r) -> r -> [a] -> r<br><div><div><div><br clear="all"><div class="gmail_extra"><div><div class="gmail_signature">-- Kim-Ee</div></div>
</div></div></div></div></div>