Мне нужно написать функцию, которая может подставлять переменные из пар списка в список. например (subsitute-var '((p #t) (Q #f)) '(P and Q or Q))
Я написал код
(define substitute
(lambda (A B list)
(cond
((null? list) '())
((list? (car list))
(cons (substitute A B (car list)) (substitute A B (cdr list))))
((eq? (car list) A) (cons B ( substitute A B (cdr list))))
(else
(cons (car list) (substitute A B (cdr list)))))))
(define substitute-var
(lambda (list var)
(cond
((null? list) '())
((null? var) '())
((substitute (caar var) (car (cdr (car var))) list))
(substitute-var list (cdr var)))))
но дело в том, что он заменяет только первую пару (p #t)
и оставляет остаток списка таким же. Я пытаюсь вызвать substitute-var
рекурсивно, но это также не работает. поэтому мне нужна помощь пожалуйста, помогите мне спасибо