在 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 . . .]
我猜你在谈论迭代:
(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)