clojure:减少:应用函数n次,保持中间结果

时间:2016-11-16 04:08:22

标签: clojure

问题陈述

给定n,x,f:     我想要输出表格:

[x, f(x), f(f(x)), f(f(f(x))), ..., f^{n-1}(x)]

现有解决方案

这可以通过减少

来完成
(reductions
  (fn [state _] (f state))
  state
  (range n))

问题

是否存在提供更短解决方案的原语?

1 个答案:

答案 0 :(得分:8)

你想要的是clojure.core/iterate,它提供了f -> x -> [x, f(x), f^2(x), f^3(x), ...]clojure.core/take,它提供了一种方法来切割序列中的第一个n元素。 take是惰性的,iterate也是如此,因此无法保证副作用。