Clojure 和 Python 中的惰性无限序列
·
回答问题
以下是我在 Clojure 和 Python 中找到的懒惰无限斐波那契数序列的最佳实现:
Clojure:
(def fib-seq (lazy-cat [0 1]
(map + fib-seq (rest fib-seq))))
示例用法:
(take 5 fib-seq)
Python:
def fib():
a = b = 1
while True:
yield a
a,b = b,a+b
示例用法:
for i in fib():
if i > 100:
break
else:
print i
显然 Python 代码更加直观。
我的问题是: Clojure 中是否有更好(更直观和简单)的实现?
编辑
我在Clojure Prime Numbers打开一个后续问题
Answers
我喜欢:
(def fibs
(map first
(iterate
(fn [[ a, b ]]
[ b, (+ a b) ])
[0, 1])))
这似乎与 python/generator 版本有一些相似之处。
更多推荐

所有评论(0)