He estado trabajando junto con The Little Schemer para aprender Scheme y usar PLT-Scheme para mi entorno.Ayuda para entender las Continuaciones en el Esquema
El pequeño Schemer me ha ayudado enormemente con la recursividad (es sencillo para mí ahora), pero estoy atascado en una parte del libro que introduce "recolectores" y llama a la función en su conjunto una continuación.
Aquí está el código de ejemplo que han utilizado. Entiendo los elementos recursivos pero estoy atascado, en particular en las funciones lambda: mi mente no puede seguir el camino y cómo se establecen los argumentos para esa función lambda (ya que su única llamada es llamarlos nuevamente en recursión, hay sin uso concreto dentro del cuerpo de la función).
Si alguien podría más o menos darme un desglose de la ruta de cálculo a través de la recursión de la función en los colectores lambda, eso puede ayudarme.
;; Build a nested list of even numbers by removing the odd ones from its
;; argument and simultaneously multiply the even numbers and sum the odd
;; numbers that occur in its argument.
(define (even-only-collector l col)
(cond
((null? l)
(col (quote()) 1 0))
((atom? (car l))
(cond
((even? (car l))
(even-only-collector (cdr l)
(lambda (newl p s)
(col (cons (car l) newl)
(* (car l) p) s))))
(else
(even-only-collector (cdr l)
(lambda (newl p s)
(col newl
p (+ (car l) s)))))))
(else
(even-only-collector (car l)
(lambda (al ap as)
(even-only-collector (cdr l)
(lambda (dl dp ds)
(col (cons al dl)
(* ap dp)
(+ as ds)))))))))
;; The collector function
(define (collector newl product sum)
(cons sum
(cons product newl)))
Gracias de antemano !!
@lpthnc:. ¿has mirado en newLISP? – Ixmatus