Lisp “方案错误”;除外:误用单位导入关键字“;

Lisp “方案错误”;除外:误用单位导入关键字“;,lisp,scheme,racket,Lisp,Scheme,Racket,我正在编写一个函数,它返回出现在一个列表中而不是另一个列表中的元素。比如说, (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)))

我正在编写一个函数,它返回出现在一个列表中而不是另一个列表中的元素。比如说,

(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)))))
然后返回一个错误,说明“Exception:在:(except(cdr lm)ln)中误用单元导入关键字”


为什么会发生这种情况?

看起来您在定义了关键字的库中遇到了一些问题。但是仍然可以使用它作为函数的名称,所以我猜还有其他错误。如果您提供了要运行的完整代码,就可以说得更多。

您好,谢谢您的帮助。事实上,这就是我在启动DrRacket后输入的所有代码,所以我也很困惑。知道输入的确切位置很重要:在顶部定义窗口还是在底部交互窗口?了解您添加的内容之前是否有任何文本也很重要(例如,一些
#lang
行)?最后,了解您的语言设置(两者)很重要。但SO并不是一个真正的支持论坛,所以最好在IRC(#racket)等网站上提问。