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