Python: zagnieżdżone lambdy - `s_push: przepełnienie stosu parsera Błąd pamięci`

Niedawno natknąłem sięTen artykuł który opisuje jak kodować FizzBuzz używając tylko Procs w Ruby, a ponieważ byłem znudzony, pomyślałem, że dobrze byłoby spróbować zaimplementować to samo w Pythonie przy użyciu lambd.

Dotarłem do sekcji, w której tworzysz liczby za pomocą zagnieżdżonych funkcji, i napisałem następujący skrypt Pythona:

#!/usr/bin/env python

zero  = lambda p : (lambda x: x)
one   = lambda p : (lambda x: p(x))
two   = lambda p : (lambda x: p(p(x)))
three = lambda p : (lambda x: p(p(p(x))))
five  = lambda p: (lambda x: p(p(p(p(p(x))))))

fifteen = lambda p : (lambda x: p(p(p(p(p( \
                                p(p(p(p(p( \
                                p(p(p(p(p(x))))))))))))))))


hundred = lambda p: (lambda x: p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p( \
                               p(p(p(p(p(p(p(p(p(p(x)))))))))))))))))))))))))))) \
                                                     ))))))))))))))))))))))))))) \
                                                     ))))))))))))))))))))))))))) \
                                                     )))))))))))))))))))

def to_int(func):
    return func(lambda n: n + 1)(0)

print to_int(zero)
print to_int(one)
print to_int(two)
print to_int(three)
print to_int(five)
print to_int(fifteen)
print to_int(hundred)

Liczby od zera do piętnastu działają prawidłowo, ale jeśli spróbuję utworzyć liczbę 100, plik nie zostanie uruchomiony z powodu następującego błędu:

s_push: przepełnienie stosu parsera
Błąd pamięci

Muszę to skomentować, aby plik w ogóle działał.

Ten rodzaj jest do bani - czy jest jakieś wyjście z tego ograniczenia, aby móc dowolnie zagnieżdżać lambdy i wywołania funkcji bez upadku Pythona i braku pamięci?

Lub alternatywnie, czy jest jakiś rodzaj sztuczki rachunku lambda, której mogę użyć do wyrażenia liczby 100 bez posiadania tak wielu funkcji zagnieżdżonych?