Два других ответа (которые, кстати, идентичны) в настоящее время работают только на верхнем уровне списка.Если вы также хотите, чтобы он удалил ваш атом из всех вложенных списков, вам придется искать там также:
(define (delete atm lis)
(cond
((null? lis) lis)
((eq? atm (car lis)) (delete atm (cdr lis)))
((list? (car lis)) (cons (delete atm (car lis)) (delete atm (cdr lis))))
(else (cons (car lis) (delete atm (cdr lis))))))
Если это не то, что вам нужно, возможно, вы можете указать, что именно происходит неправильно,Вы продолжаете говорить, что что-то, или много вещей, не правы, но не указываете, что это такое.Например, вы можете указать, что вы ожидаете получить в четырех примерах.