[plt-scheme] Doubt in folding

From: Eduardo Bellani (ebellani at gmail.com)
Date: Thu Oct 22 14:25:34 EDT 2009

Small doubt in a fuction I've been playing with:

;; my-fold-left : (X X -> X) X (listof X) -> (listof X)
;; applies operation to each element of lox, and
;; combines them in a new list. Works from left to right
;; in lox.
(define (my-fold-left combinator initial lox)
  (cond
    [(empty? lox) initial]
    [else
     (combinator (my-fold-left combinator
                               initial
                               (rest lox))
                 (first lox))]))

;; plt's built in foldl
(foldl cons empty (list 1 2 3 4))       ; evals to what I expected -> (4 3 2 1)

;; mine
(my-fold-left cons empty (list 1 2 3 4))   ; evals to ((((() . 4) . 3)
. 2) . 1), but why ?


Thanks for the time.
-- 
Eduardo Bellani

www.cnxs.com.br

I object to doing things that computers can do.
- Olin Shivers


Posted on the users mailing list.