2012-02-18 16 views
0

我正在写一个函数,它返回出现在一个列表中而不出现在另一个列表中的元素。例如,方案错误“除了:误用单位导入关键字”

(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):在单位进口关键词的滥用”。

为什么会发生这种情况?

回答

1

看起来像是遇到了unit库,它有一个except关键字定义的问题。但它应该仍然可以作为你的函数的名字,所以我猜猜别的是错的。如果您提供您正在尝试运行的完整代码,则可以多说几句。

+0

嗨,谢谢你的帮助。实际上,这是我启动DrRacket后输入的所有代码,所以我也感到困惑。 – goldfrapp04 2012-02-18 18:52:09

+1

准确地*知道您键入的位置是重要的:在顶部定义窗口还是在底部交互窗口中?在添加之前知道是否有任何文本也很重要(例如,一些'#lang'行)?最后,知道你的语言设置(两者)是很重要的。但是SO不是真正的支持论坛,所以最好在[邮件列表](http://racket-lang.org/community.html)或IRC(#racket)上提问。 – 2012-02-18 22:44:24