Clojure 从一个元素开始,将函数f反复应用于每个新元素,同时将它们添加到向量

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

在Clojure中,是否有一些通用功能(与高阶函数类似,
map
filter
reduce
,其中一个函数从一个元素的向量开始,将函数
f
应用到元素,将元素添加到向量,并将函数应用到新元素,然后继续,直到满足某些条件为止

示例:我有vector
[1]
,function
double
,我要的函数称为
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]