[英]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.