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



在Clojure中,是否存在一些通用函数(类似于高阶函数mapfilterreduce,其中从一个带有一个元素的向量开始,将函数f应用于该元素,将该元素添加到向量,并将该函数应用于新元素,然后继续这样做,直到满足某些条件。

示例:我有向量[1],函数double,以及我所追求的函数,称之为f,类似于:

(take-while some-pred (f double 1))

产生:[1 2 4 8 16 32 . . .]

我想你说的是迭代:

(take-while #(< % 1000) (iterate #(* 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]

相关内容

  • 没有找到相关文章

最新更新