Clojure“反复”

时间:2017-01-14 17:27:20

标签: clojure

repeatedly的Clojure来源读取:

  

采用无参数的函数,可能是副作用,并返回   一个无限(或长度为n,如果提供)懒惰的调用序列。

在不知道上述解释的情况下,我如何推断repeatedly的以下定义是否具有无参数的函数?

(defn repeatedly
  ([f] (lazy-seq (cons (f) (repeatedly f))))
  ([n f] (take n (repeatedly f))))

1 个答案:

答案 0 :(得分:4)

通过查找传入函数的引用。

注意:

(f)

f在定义中仅被引用三次。其中两个时间是传递给递归调用(你可以告诉它没有被调用,因为它没有被括号括起来),以及它被调用的地方。

如果它被调用(括号括起来),你可以告诉它需要0个参数,因为没有传递给它。