从列表Clojure中删除列表

时间:2015-11-30 15:02:02

标签: 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)

返回

java.lang.ClassCastException: null

2 个答案:

答案 0 :(得分:4)

如果你想使用filter,请注意第一个参数必须是一个函数,所以你可以使用

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

这就是你获得ClassCastException

的原因

remove也是如此。您也可以使用partial而不是匿名函数:

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

答案 1 :(得分:4)

filterremove函数都希望第一个参数成为谓词函数。您可以使用partial函数将运算符=转换为谓词:

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