2012-02-18 54 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