2015-11-30 45 views
0

名單列表中刪除列表我有一個列表,例如:從Clojure的

(def lst '((a b c) (d e) (f g h))) 

我需要建立一個新的列表在去除內部列表中的一個, 我已經試過

(remove '(d e) lst) 

返回

java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to clojure.lang.IFn 

我也試過

(filter (not= '(d e)) lst) 

如果你想使用filter返回

java.lang.ClassCastException: null 
+1

請看看Clojure的文檔;您可能需要退後一步,熟悉如何學習該語言。對於他們希望有一個函數的狀態的文檔,例如,將引用列表傳遞給「remove」違反了這一點。 –

回答

4

,請注意,第一個參數必須是一個函數,所以你可以使用

(filter #(not= '(d e) %) lst) 

這就是爲什麼你得到了ClassCastException

對於remove也是如此。你也可以使用partial,而不是一個匿名函數:

(remove (partial = '(d e)) lst) 
4

兩個filterremove函數期望第一個參數是一個謂詞函數。你可以使用partial函數變換操作=成謂詞:

(remove (partial = '(d e)) lst)