Clojure和Python中的Lazy无限序列 [英] Lazy infinite sequences in Clojure and Python

查看:90
本文介绍了Clojure和Python中的Lazy无限序列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里是最好的实现,我可以找到的懒惰无限序列的斐波那契数字在Clojure和Python:

Here are the best implementations I could find for lazy infinite sequences of Fibonacci numbers in both Clojure and 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代码更直观。

Obviously the Python code is much more intuitive.

我的问题是:在Clojure中有更好的(更直观和简单)的实现吗?

My question is: Is there a better (more intuitive and simple) implementation in Clojure ?

我在
开启后续问题 Clojure首数

推荐答案

>

I like:

(def fibs 
  (map first 
       (iterate 
           (fn [[ a, b       ]]  
                [ b, (+ a b) ]) 
           [0, 1])))     


$ b b

这似乎与python / generator版本有一些相似之处。

Which seems to have some similarities to the python/generator version.

这篇关于Clojure和Python中的Lazy无限序列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆