Как сказано в заголовке, я пытаюсь написать функцию, которая принимает список, переменную и элемент, а затем заменяет все экземпляры переменной в списке этим элементом.
Например:
(замена '(C или (D или D))' D #f) вернет
'(C или (#f или #f)))
Прямо сейчас у меня есть:
(define (substitute lst rep new)
(cond ((or (null? lst))
lst)
((eq? (car lst) rep)
(cons new (substitute (cdr lst) rep new)))
(else
(cons (car lst) (substitute (cdr lst) rep new)))))
, который не проверяет вложенные списки, как в моем примере, хотя он отлично работает, когда они не являются частьюinput.
И у меня возникли проблемы с тем, где разместить рекурсию, чтобы сделать это - или было бы проще сгладить все это, а затем восстановить его после того, как все будет каким-то образом заменено?