I just wanted to thank all of you for your insightful responses. This has been very useful!<div>--Will K.<br><br><div class="gmail_quote">On Fri, Aug 13, 2010 at 3:21 PM, Will M. Farr <span dir="ltr">&lt;<a href="mailto:wmfarr@gmail.com" target="_blank">wmfarr@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+1 from me, too.  I always have to check myself to remember that the foldl accumulator argument comes in on the *right*.  FWIW, OCaml also does it the Haskell way (foldl accumulator on the left, foldr accumulator on the right).<br>


<br>
This also makes the obvious many-argument version more efficient:<br>
<br>
(define (foldl kons knil . lists)<br>
  (if (ormap null? lists)<br>
    knil<br>
    (apply foldl kons (apply kons knil (map car lists)) (map cdr lists))))<br>
<br>
as opposed to<br>
<br>
(define (foldl* kons knil . lists)<br>
  (if (ormap null? lists)<br>
    knil<br>
    (apply foldl* kons (apply kons (append (map car lists) (list knil))) (map cdr lists))))<br>
<br>
The extra append is kinda annoying in the foldl* version....<br>
<font color="#888888"><br>
Will<br>
</font><div><div></div><div><br>
On Aug 13, 2010, at 4:18 PM, Matthias Felleisen wrote:<br>
<br>
&gt;<br>
&gt; I privately +1ed Joe, and I all supportive of introducing new folds and phasing out the old ones.<br>
&gt;<br>
&gt;<br>
&gt; On Aug 13, 2010, at 4:04 PM, Sam Tobin-Hochstadt wrote:<br>
&gt;<br>
&gt;&gt; On Fri, Aug 13, 2010 at 3:11 PM, Joe Marshall &lt;<a href="mailto:jmarshall@alum.mit.edu" target="_blank">jmarshall@alum.mit.edu</a>&gt; wrote:<br>
&gt;&gt;&gt; It seems to me that the Haskell version is better.<br>
&gt;&gt;<br>
&gt;&gt; The Haskell ordering also has the advantage of fitting with the Typed<br>
&gt;&gt; Racket type system for variable-arity functions.<br>
&gt;&gt; --<br>
&gt;&gt; sam th<br>
&gt;&gt; <a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</a><br>
&gt;&gt; _________________________________________________<br>
&gt;&gt; For list-related administrative tasks:<br>
&gt;&gt; <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
&gt;<br>
&gt; _________________________________________________<br>
&gt;  For list-related administrative tasks:<br>
&gt;  <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
<br>
_________________________________________________<br>
  For list-related administrative tasks:<br>
  <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
</div></div></blockquote></div><br></div>