學習clojure,嘗試創建所有素數的懶惰無限序列。 我知道有更高效的算法;作爲POC /課程,我比以下更理想的解決方案。依賴於前面元素的惰性序列
我有一個函數,給定的素數的序列,告訴我下一任是什麼:所以
(next-prime [2 3 5]) ; result: 7
我的懶惰序列本身必須通過這個功能,然後拿結果,並添加到本身。
我第一次嘗試:
(def lazy-primes
(lazy-cat [2 3 5] (find-next-prime lazy-primes)))
..這導致了一個IllegalArgumentException:不知道如何從創建ISEQ:java.lang.Integer中
我的第二次嘗試:
(def lazy-primes
(lazy-cat [2 3 5] [(find-next-prime lazy-primes)]))
..當我詢問10個元素時,它給了我[2 3 5 7]。
嘗試3:
(def lazy-primes
(lazy-cat [2 3 5]
(conj lazy-primes (find-next-prime lazy-primes))))
(take 10 lazy-primes) ; result: (2 3 5 7 2 3 5 7 2 3)
的這些似乎都像他們應該工作(或者至少應該工作鑑於前面沒有工作)。爲什麼我會得到每個案件的虛假輸出?
有趣的網站,但你可以給我什麼我的代碼是做一個解釋? – Kricket 2011-02-10 10:41:29