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

bla*_*ned 4 clojure

在 Clojure 中,是否有一些通用函数(类似于高阶函数map, filter, reduce,例如,以具有一个元素的向量开始,将函数应用于f元素,将元素添加到向量,然后将函数应用于新元素,并继续这样直到满足某些条件。

示例:我有 vector [1]、 functiondouble和我所追求的函数,将其称为f,并且类似于:

(take-while some-pred (f double 1))
Run Code Online (Sandbox Code Playgroud)

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

lee*_*ski 5

我猜你在谈论迭代

(take-while #(< % 1000) (iterate #(* 2 %) 1))
;;=> (1 2 4 8 16 32 64 128 256 512)
Run Code Online (Sandbox Code Playgroud)

如果你需要矢量,你也可以使用换能器:

(into [] (take-while #(< % 1000)) (iterate #(* 2 %) 1))
;; [1 2 4 8 16 32 64 128 256 512]
Run Code Online (Sandbox Code Playgroud)