繁体   English   中英

在Clojure函数中使用过滤器

[英]Using filter in clojure function

为什么

(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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM