Clojure 从一个元素开始,将函数f反复应用于每个新元素,同时将它们添加到向量
在Clojure中,是否有一些通用功能(与高阶函数类似,Clojure 从一个元素开始,将函数f反复应用于每个新元素,同时将它们添加到向量,clojure,Clojure,在Clojure中,是否有一些通用功能(与高阶函数类似,map,filter,reduce,其中一个函数从一个元素的向量开始,将函数f应用到元素,将元素添加到向量,并将函数应用到新元素,然后继续,直到满足某些条件为止 示例:我有vector[1],functiondouble,我要的函数称为f,类似于: (take-while some-pred (f double 1)) 它产生:[1 2 4 8 16 32…]我想你说的是: (花时间#( (1 2 4 8 16 32 64 128 256
map
,filter
,reduce
,其中一个函数从一个元素的向量开始,将函数f
应用到元素,将元素添加到向量,并将函数应用到新元素,然后继续,直到满足某些条件为止
示例:我有vector[1]
,functiondouble
,我要的函数称为f
,类似于:
(take-while some-pred (f double 1))
它产生:
[1 2 4 8 16 32…]
我想你说的是:
(花时间#(<%1000)(迭代#(*2%)1))
;;=> (1 2 4 8 16 32 64 128 256 512)
如果需要矢量,也可以使用传感器:
(into [] (take-while #(< % 1000)) (iterate #(* 2 %) 1))
;; [1 2 4 8 16 32 64 128 256 512]
(进入[](花时间#(<%1000))(迭代#(*2%)1))
;; [1 2 4 8 16 32 64 128 256 512]
(into [] (take-while #(< % 1000)) (iterate #(* 2 %) 1))
;; [1 2 4 8 16 32 64 128 256 512]