код, о котором идет речь:
(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
и увиденное
.
Трудно объяснить мои вопрос, потому что мне кажется, что мне просто не хватает части. Если, возможно, кто-то может дать более подробный обзор, чем книга, я смогу понять, как это работает.