为什么
(filter even? (range 10))
给 (0 2 4 6 8)
但
((fn [x] filter even? x)
(range 10))
给
(0 1 2 3 4 5 6 7 8 9)
?
您的匿名函数存在问题 - 让我们以更易读的方式编写它:
((fn [x]
(do filter
even?
x))
(range 10))
现在我认为很明显为什么它返回整个范围序列:值(range 10)
绑定到参数x
并作为函数的结果返回。
正确的版本是:
((fn [x] (filter even? x))
(range 10))
;; => (0 2 4 6 8)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句