我有一个列表,例如:
(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)