Haskell-like lazy list in Python.
>>> from lazylist import *
>>> a = make_lazylist([1,2,5,6,8,9])
>>> print(a)
[1, 2, 5, 6, 8, 9]
>>> b = a.reverse()
>>> print(b)
[9, 8, 6, 5, 2, 1]
>>> c = a.filter(lambda x: x % 2 == 0)
>>> print(c)
[2, 6, 8]
>>> d = a.map(lambda x: x ** 2)
>>> print(d)
[1, 4, 25, 36, 64, 81]def quicksort(a):
if len(a) <= 1:
return a
p, xs = a[0], a[1:]
lesser, greater = xs.partition(lambda x: x < p)
return lesser.call(quicksort) + make_lazylist([p]) + greater.call(quicksort)def prims(a):
p, xs = a[0], a[1:]
return make_lazylist([p]) + xs.filter(lambda x: x % p != 0).call(prims)
pgen = prims(naturals[2:])