The Little Schemer apenas para adultos * & co

Estou tendo dificuldade em entender o que está acontecendo com The Little Schemer'sevens-only*&co exemplo na página 145.

Aqui está o 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))))))))))

A inicialcol pode ser:

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

O que eu não estou conseguindo é, coml Como'((1) 2 3), vai imediatamente para a finalelse com(car l) Como(1) e(cdr l) Como(2 3). Bom, mas minha mente fica em branco tentando resolver o problemadnewl, dproduct, dsum denewl, product, sum. Também seria útil se alguém pudesse me orientar sobre como configurar o DrRacket ou o Chez Scheme ou o MIT-Scheme para executar um stepper.

Mas talvez eu esteja falando cedo demais. Algum iniciante lendo isso pela primeira vez deveria entender essa continuação selvagem?

questionAnswers(4)

yourAnswerToTheQuestion