-1
Почему мы используем tailr и headr? Я не могу понять.Что делает этот код схемы?
(define (foo lst)
(cond
((not (list? lst)) lst)
((null? lst) lst)
(else (let* ((tail (cdr lst))
(head (car lst))
(tailr (foo tail))
(headr (foo head)))
(append tailr (list headr))))))
хвост, голова, tailr и headr только промежуточные переменные. Весь блок let * можно записать как '(append (foo (cdr lst)) (list (foo (car lst)))). –
Это вопрос о домашней задаче или экзамене? Это время года, и, хотя я не вижу его в Интернете, я вижу, что кто-то также ввел код в ideone на http://ideone.com/fork/hqywYX; где они смогут * видеть * то, что он на самом деле делает, запустив его. –
Просто запустите его ... он рекурсивно реверсирует список (и также работает для вложенных списков). 'tailr' и' headr' - это только локальные переменные. –