[plt-scheme] Re: implementation of foldl
In Mathematica (which uses lots of FP paradigms), foldl is Fold :
> Fold[f,init,{a,b,c,d}]
f[f[f[f[init,a],b],c],d]
and behaves like foldl in Haskell. The accumulator is on the left, and
this may be a good behavior as the computation is done iteratively
("by hand") from left to right.
IMHO...
-jpr
> De : "keydana at gmx.de" <keydana at gmx.de>
> Date : 28 avril 2009 22:09:25 HAEC
> À : plt-scheme at list.cs.brown.edu
> Objet : [plt-scheme] implementation of foldl
>
>
> Hi all,
>
> I am wondering whether the order in which foldl applies the "init"
> argument and the "car" argument to the given combining function is
> to be regarded as specified or as an implementation detail (such
> that you should not rely on it).
>
> Just as an exercise, I was writing reverse with foldl and foldr, and
> noticed that with "my own" _foldr, defined as
>
> (define _foldl
> (lambda (proc initial lst)
> (if (null? lst)
> initial
> (_foldl proc (proc initial (car lst)) (cdr lst)))))
>
>
> it worked as
>
> (define reverse-fl-1
> (lambda (lst)
> (_foldl (lambda (x y) (cons y x)) '() lst)))
>
>
> whereas for the PLT version of foldl I need
>
> (define reverse-fl-2
> (lambda (lst)
> (foldl (lambda (x y) (cons x y)) '() lst)))