遅延リスト

Haskell

 [0..10] ++ [20..30]

Python

 import itertools
 ietrtools.chain(xrange(0,11), xrange(20,31))

xrangeは厳密には違うらしいけど、似たような動作をするものという事で。
ここでの利点は、リストの生成を遅らせる事で一時的なメモリの使用量を抑える事が出来る事。

Haskell
場合は、遅延評価より無限リストも表現できるのだけど、

Pythonの場合は、少し工夫が必要。generater, iterator がfor文での遅延評価の仕組み
を提供しているので、それらを使う事が出来る。

 def infinity_loop(n=0):
   while True:
     yield n
     n += 1
 import itertools
 for i in itertools.count(1):
    print i
      • -