The Little Schemer iguens-only * & co

Estoy teniendo dificultades para entender lo que está pasando con The Little Schemer'sevens-only*&co ejemplo en la página 145.

Aquí está el código:

(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))))))))))

La inicialcol puede ser:

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

Lo que no entiendo es, conl como'((1) 2 3), entra inmediatamente en la finalelse con(car l) como(1) y(cdr l) como(2 3). Bien, pero mi mente se queda en blanco tratando de resolver eldnewl, dproduct, dsum desde elnewl, product, sum. También sería útil que alguien me ayudara a configurar DrRacket o Chez Scheme o MIT-Scheme para ejecutar un paso a paso.

Pero tal vez estoy deslumbrando demasiado pronto. ¿Se supone que algún principiante que lea esto por primera vez realmente entienda esta continuación salvaje?

Respuestas a la pregunta(4)

Su respuesta a la pregunta