2017-01-14 36 views
1

Clojure的源repeatedly讀取:Clojure的「反覆」

注意到無參數的函數,推測可能與副作用,並返回 無限(或長度n如果提供)調用它的懶惰序列。

不知道上面的解釋,我該如何推斷repeatedly的下面的定義採用了沒有參數的函數?

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

回答

3

通過尋找函數的引用中傳遞

注:

(f) 

f的定義僅引用三次。其中兩次是將它傳遞給遞歸調用(您可以告訴它沒有被調用,因爲它沒有被括號括起來),並且一次被調用。

如果它被調用(被括號括起來),你可以告訴它期望0個參數,因爲沒有被傳遞給它。