repeatedly
的Clojure来源读取:
采用无参数的函数,可能是副作用,并返回 一个无限(或长度为n,如果提供)懒惰的调用序列。
在不知道上述解释的情况下,我如何推断repeatedly
的以下定义是否具有无参数的函数?
(defn repeatedly
([f] (lazy-seq (cons (f) (repeatedly f))))
([n f] (take n (repeatedly f))))
答案 0 :(得分:4)
通过查找传入函数的引用。
注意:
(f)
f
在定义中仅被引用三次。其中两个时间是传递给递归调用(你可以告诉它没有被调用,因为它没有被括号括起来),以及它被调用的地方。
如果它被调用(括号括起来),你可以告诉它需要0个参数,因为没有传递给它。