Вот фрагмент кода для простого случая.
(define (remove L1 L2)
(cond ((null? L1) '())
((memv (car L1) L2) (remove (cdr L1) L2))
(else (cons (car L1) (remove (cdr L1) L2)))))
Помните, что в Схеме или любом другом функциональном языке вам нужно задать вопрос не «что мне делать?«, а лучше спросить « какое значение мне нужно получить? ».
Обратите внимание, что этот простой пример не обрабатывает вложенные списки.Так что (remove '(A (C D)) '(B C D))
даст (A (C D))
.Обработка вложенных списков оставлена читателю в качестве упражнения: D