我想将一个函数多次应用于数据结构,并想知道是否有更简单的方法。
;; 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)
答案 0 :(得分:7)
您正在寻找iterate:
(迭代f x)
返回一个懒惰的x序列,(f x),(f(f x))等.f必须没有副作用
你只需要取第n个元素:
(nth (iterate incmap a) 9)
使用线程宏:
(-> (iterate incmap a)
(nth 9))