Объясните пример продолжения на стр.137 в The Little Schemer

код, о котором идет речь:

(define multirember&co
  (lambda (a lat col)
    (cond
     ((null? lat)
      (col (quote ()) (quote ())))
     ((eq? (car lat) a)
      (multirember&co a
                      (cdr lat)
                      (lambda (newlat seen)
                        (col newlat
                             (cons (car lat) seen)))))
     (else
      (multirember&co a
                      (cdr lat)
                      (lambda (newlat seen)
                        (col (cons (car lat) newlat)
                             seen))))))

Я смотрел на это весь день, но, кажется, не совсем понимаю. Когда вы повторяете функцию, вы повторно определяете col , но в примерах они, кажется, используют исходное определение. Почему бы его не изменить. Как вы можете повторить его, не передавая параметры newlat и увиденное .

Трудно объяснить мои вопрос, потому что мне кажется, что мне просто не хватает части. Если, возможно, кто-то может дать более подробный обзор, чем книга, я смогу понять, как это работает.

14
задан Will Ness 20 January 2018 в 14:52
поделиться