从列表列表中删除列表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

如果要使用filter,请注意第一个参数必须是一个函数,因此可以使用

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

这就是你得到ClassCastException的原因。

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

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

filter和remove函数都希望第一个参数是谓词函数。您可以使用偏函数将运算符=转换为谓词:

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

最新更新