complement函数就是返回一个与目标函数接收同样参数但是返回结果相反的函数
(
(fn [x]
(filter (complement sequential?)
(rest (tree-seq sequential? seq x)))
)
'((1 2) 3 [4 [5 6]]))
=> (1 2 3 4 5 6)
等价于
(
(fn [x]
(filter #(not (sequential? %))
(rest (tree-seq sequential? seq x)))
)
'((1 2) 3 [4 [5 6]]))
=> (1 2 3 4 5 6)
我们发现complement其实是一种柯里化简化了匿名函数的编写