<div dir="ltr"><div><div><div><div><div><div><div>Reading <a href="http://learnyouahaskell.com/higher-order-functions">http://learnyouahaskell.com/higher-order-functions</a><br><br></div>I understand that with the function<br><span><span><br><span style="font-family:monospace,monospace">sum'</span></span><span style="font-family:monospace,monospace"><span class=""> :: </span><span>(</span><span class="">Num</span><span> a)</span><span class=""> => </span><span>[a]</span><span class=""> -> </span><span>a </span></span></span><span style="font-family:monospace,monospace"><br>sum'<span class=""> = </span><span>foldl (+) </span><span class="">0</span><span><br></span><span><span></span></span></span><br></div><div>the call<br></div><div><br></div>ghci>>> sum' [1,2,3]<br><br></div>will be evaluated as<br><br>0 + 1 + 2 + 3 = 6<br><br></div>But what about the function <span><span><br><br><span style="font-family:monospace,monospace">elem'</span></span><span style="font-family:monospace,monospace"><span class=""> :: </span><span>(</span><span class="">Eq</span><span> a)</span><span class=""> => </span><span>a</span><span class=""> -> </span><span>[a]</span><span class=""> -> </span><span class="">Bool</span><span>  <br></span></span></span><span style="font-family:monospace,monospace">elem' y ys<span class=""> = </span><span>foldl (\acc x</span><span class=""> -> </span><span class="">if</span><span> x</span><span class=""> == </span><span>y </span><span class="">then</span><span> </span><span class="">True</span><span> </span><span class="">else</span><span> acc) </span><span class="">False</span><span> ys</span></span><br><br></div>and calling it with<br><br></div>ghci>>> elem' 3 [1,2,3]<br><br></div>How is that evaluated to True by foldl in elem'?<br><div><div><div><div><br></div><div>Thanks in advance for any explanation to this!<br></div></div></div></div></div>