<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
&gt; &gt; However, with optimisations turned on... GHC knows that sum is<br>
&gt; &gt; actually strict<br>
&gt;<br>
&gt; GHC does that when optimizations are turned on, but that behavior<br>
&gt; is not required by the Haskell standard. So there is no guarantee<br>
&gt; that any given compiler will produce usable output if you use foldl<br>
&gt; instead of foldl&#39; for sum.<br>
&gt;<br>
&gt; In GHCi sum is broken, because optimizations are not in<br>
&gt; effect there. You have to define your own version of sum<br>
&gt; using foldl&#39; for every GHCi session (or put it in your .ghci file).<br>
&gt;<br>
&gt; So it&#39;s a trade-off between a slight convenience in a bizarre<br>
&gt; corner case and general usability. I agree with Don that this is<br>
&gt; a bug in the Haskell 98 standard.<br>
<br>
I&#39;m not sure whether it&#39;s a wart or a bug, but I agree that it would be<br>
better to have the default sum strict (and provide lazysum for the cases<br>
where it&#39;s useful).<br></blockquote><div><br></div><div>That would be really inconsistent with the way the rest of the Haskell language and libraries works.</div><div><br></div><div>Note that foldl&#39; has a &#39; to indicate that it&#39;s not the same as foldl exactly.  I would propose that sum&#39; exist as well as sum, and that sum be lazy.</div>
<div><br></div><div>Part of what&#39;s interesting about Haskell is the default non-strict evaluation of the language, and even if it&#39;s hard for newcomers to get used to it, they&#39;re better off having a consistent space to work in rather than all these exceptions to make algorithms like &quot;sum&quot; work more efficiently when the problem was one of documentation and education about the language.</div>
<div><br></div><div>Of course if you want a strict functional language there&#39;s plenty of those out there.</div><div><br></div><div>Dave</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
&gt;<br>
&gt; Regards,<br>
&gt; Yitz<br>
<br>
Cheers,<br>
Daniel<br>
<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" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br>