J'ai travaillé aux côtés de La Petite Intrigant à l'apprenant et à l'aide de PLT-Schéma de mon environnement.
Le Petit Intrigant m'a aidé énormément avec la récursivité (c'est simple pour moi pour l'instant) mais je suis bloqué sur une partie d'un livre qui présente les "collectionneurs" et appelle l'ensemble de la fonction continuation.
Voici l'exemple de code qu'ils ont utilisés. Je comprends le récursive éléments, mais je suis coincé, en particulier sur les lambda fonctions - mon esprit ne peut pas suivre le chemin d'accès et comment les arguments de cette fonction lambda sont fixés (puisque leur seul appel est de les appeler de nouveau à la récursivité, il n'est pas concret d'utilisation dans le corps de la fonction).
Si quelqu'un pourrait-plus-ou-moins me donner une pause en bas de la voie de calcul par le biais de la récursivité de la fonction dans le lambda collectionneurs, qui peut m'aider.
;; 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)))
Je vous remercie à l'avance!!!!