我知道我可以用循环和重复来解决我的问题,但它似乎是一个简单的(常见的?)操作,我想知道在clojure中没有单个函数或者更简洁的方法然后循环/重复来解决这个问题。我搜索了它但却找不到东西。
我正在寻找的功能如下。
(the-function n input some-function)
其中n是在输入上重新调用some-function的时间。
一个简单的例子是:
(the-function 3 1 (fn [x] (+ x 1)))
=> 4
在Clojure中有类似的东西吗?
祝你好运
答案 0 :(得分:9)
你想要的基本上是iterate
。它将生成函数重复应用于种子输入的无限序列。因此,要复制您在此处描述的行为,您可以写:
(nth (iterate some-function input) n)
答案 1 :(得分:1)
试试这个:
(defn your-iterate-fn [times init-param the-fn]
(last (take (inc times) (iterate the-fn init-param))))
(your-iterate-fn 3 1 (fn [x] (+ x 1)))
==> 4