The Little Schemer evens-only * & co

Trudno mi zrozumieć, co się dzieje z The Little Schemer'sevens-only*&co przykład na stronie 145.

Oto kod:

(define evens-only*&co
 (lambda (l col)
   (cond
    ((null? l)
     (col '() 1 0))
    ((atom? (car l))
     (cond
      ((even? (car l))
       (evens-only*&co (cdr l)
                    (lambda (newl product sum)
                      (col (cons (car l) newl)
                           (opx (car l) product)
                           sum))))
      (else
       (evens-only*&co (cdr l)
                    (lambda (newl product sum)
                      (col newl product (op+ (car l) sum)))))))
    (else
     (evens-only*&co (car l)
                  (lambda (newl product sum)
                    (evens-only*&co (cdr l)
                                    (lambda (dnewl dproduct dsum)
                                      (col (cons newl dnewl)
                                           (opx product dproduct)
                                           (op+ sum dsum))))))))))

Początekcol może być:

(define evens-results
 (lambda (newl product sum)
   (cons sum (cons product newl))))

To, czego nie dostaję, jestl tak jak'((1) 2 3), przechodzi natychmiast do finałuelse z(car l) tak jak(1) i(cdr l) tak jak(2 3). Dobrze, ale mój umysł robi się pusty, próbując rozwiązać problemdnewl, dproduct, dsum znewl, product, sum. Byłoby również pomocne, gdyby ktoś mógł mnie pouczyć, jak skonfigurować DrRacket lub Chez Scheme lub MIT-Scheme do prowadzenia steppera.

Ale może za wcześnie zaszumiałem. Czy ktokolwiek początkujący to czyta po raz pierwszy powinien rozumieć tę dziką kontynuację?

questionAnswers(4)

yourAnswerToTheQuestion