0
我很困惑,爲什麼下面的代碼進入一個無限循環,並沒有返回的時候,我呼籲lazy-seq
一個懶惰的序列:Clojure的 - 功能沒有返回一個懶惰的序列
(= (take 5 ((fn [func se]
(lazy-seq
(reduce (fn [acc item]
(conj acc (func (last acc) item)))
[(first se)] (rest se))))
+
(range)))
[0 1 3 6 10])
的REPL只是旋轉的範圍被無限調用。
我該如何讓這個函數表現得很懶惰?
會不會有同樣的結果減少,它會旋轉? – dagda1 2014-09-06 13:05:24
不,因爲減少需要迭代,直到序列爲空,因此您可以得到最終結果,建議的函數僅在需要時纔會重複出現。你可以使用'reductions'也 – 2014-09-06 14:07:54
謝謝,我試圖重新創建減少來增加我的clojure知識,所以它只是爲了好玩 – dagda1 2014-09-06 14:52:12