Haskellのiterate関数のPython上でのオレオレ実装

iterate関数?

下のような感じ

l = iterate f x
l !!  -- return f(f(f(x)))

つまり、iterate関数は、n番目のインデックスがfをn回関数合成したものをxに作用したものである無限リストを返す。

うん、Haskell初学者にありがちな素数の判定法(エラトステネスの篩)に感動して書いてしまったんだ^ω^

class iterate(object):
    def __init__(self, f, x):
        self.f = f
        self.x = x
    def __getitem__(self, n):
        temp = self.x
        for i in range(n):
            temp = self.f(self.x)
        return temp

t = lambda x: -(x-4)

print iterate(t, 3)[3]

なお、オレオレ実装する前にpythonのmoduleで既にあるといわれると死ぬ模様