2017-01-14 3 views
1

Clojureのソースを読み取り:Clojureの「繰り返し」

は、おそらく副作用を、無引数の関数をとり、 それへの呼び出しの無限(又は長さN供給する場合)遅延シーケンスを返します。

上記の説明を知らないうちに、repeatedlyの以下の定義が引数なしの関数を取ることをどのように推定しますか?渡される関数の参照を探していることで

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

答えて

3

注:

(f) 

fは、定義の中で3回のみ参照されます。これらの時間のうちの2つは、再帰呼び出し(括弧で囲まれていないため、呼び出されていないと言える)と呼び出された場所に渡されます。

呼び出された(角カッコで囲まれている)場合は、何も渡されていないので、0個の引数が必要であることがわかります。