Maybe you think the below program is trivial, but I adore named let's so
much that I just cannot fathom that when people go functional they totally
miss this beauty


(define (count tree)

;; s = total sum up to now

;; t = tree of the type (car = child . cdr = siblings)

;; cont is the continuation, (cont 10) will continue

;; the calculation with the sum=10 see how we initiate

;; with a continuation that evaluates returns it's argument


(let loop ((s 0) (t tree) (cont (lambda (s) s)))

(if (pair? t)

(loop s (car t) (lambda (s) (loop s (cdr t) cont)))

(cont (if (number? t) t 0))))

Reply via email to