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

zac*_*ach 1 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)
Run Code Online (Sandbox Code Playgroud)

nbe*_*ger 7

您正在寻找迭代:

(迭代fx)

返回x,(fx),(f(fx))等的延迟序列.f必须没有副作用

你只需要取第n个元素:

(nth (iterate incmap a) 9)
Run Code Online (Sandbox Code Playgroud)

使用线程宏:

(-> (iterate incmap a)
    (nth 9))
Run Code Online (Sandbox Code Playgroud)