Вот лучшие реализации, которые я мог бы найти для ленивых бесконечных последовательностей чисел Фибоначчи как в 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 Основные номера