Я пишу функцию, которая возвращает элементы, которые появляются в одном списке, а не в другом. Например,
(except '(a b c) '(a d b e f))
вернет '(c)
. Первым аргументом может быть атом, и оба предполагаются плоскими. Вот мой код:
(define (except lm ln)
(cond ((null? ln) lm)
((not (list? lm))
(cond ((in? lm ln) '())
(#t lm)))
((null? lm) '())
((in? (car lm) ln) (except (cdr lm) ln))
(#t (cons (car lm) (except (cdr lm) ln)))))
Затем возвращается сообщение об ошибке «кроме: неправильное использование ключевого слова для импорта модуля в: (кроме (cdr lm) ln)»
Почему это происходит?