我想将一个函数多次应用于数据结构,并想知道是否有更简单的方法.
;; 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)
您正在寻找迭代:
(迭代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)
归档时间: |
|
查看次数: |
183 次 |
最近记录: |