重复将函数应用于数据结构

时间:2015-07-29 03:04:48

标签: clojure

我想将一个函数多次应用于数据结构,并想知道是否有更简单的方法。

;; simple map and map-incrementing function
(def a {:a 1})
(defn incmap [x] (update-in x [:a] inc))

;; best I could come up with
(reduce (fn [m _] (incmap m)) a (range 10))

;; was hoping for something like this
(repeatedly-apply incmap a 10)

1 个答案:

答案 0 :(得分:7)

您正在寻找iterate

  

(迭代f x)

     

返回一个懒惰的x序列,(f x),(f(f x))等.f必须没有副作用

你只需要取第n个元素:

(nth (iterate incmap a) 9)

使用线程宏:

(-> (iterate incmap a)
    (nth 9))