我經常在我,我的代碼讀取,像這樣的位置:如何迭代直到Clojure中的一個固定點?
(iterate improve x)
而我要找的第一個值不再是比上屆提高。 filter
和take-while
都不適用於明顯的解決方案。不過,我猶豫寫出來:
(loop [current x
next (improve x)]
(if (= current next)
current
(recur next (improve next))))
或:
(let [improvements (iterate improve x)]
(->> (map vector improvements (rest improvements))
(filter (partial apply =))
(ffirst)))
因爲在某些時候,這正成爲重複和可靠地固定點迭代是這樣的基本任務,必須有某種某處的圖書館支持,對嗎?