Python: lambdas anidadas - `s_push: desbordamiento de la pila del analizador Error de memoria`

Recientemente me encontré conEste artículo que describe cómo codificar FizzBuzz usando solo Procs en Ruby, y como estaba aburrido, pensé que sería bueno intentar e implementar lo mismo en Python usando lambdas.

Llegué a la sección donde creas números usando funciones anidadas y escribí la siguiente secuencia de comandos de Python:

#!/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)

Los números de cero a quince funcionan bien, pero si intento crear el número 100, el archivo no se ejecutará debido al siguiente error:

s_push: desbordamiento de la pila del analizador
MemoryError

Tengo que comentarlo para que el archivo se ejecute.

Esta clase de apesta: ¿hay alguna forma de evitar esta limitación para que pueda anidar arbitrariamente lambdas y llamadas a funciones sin que Python se caiga y se quede sin memoria?

O alternativamente, ¿hay algún tipo de truco de cálculo lambda que pueda usar para expresar el número 100 sin tener tantas funciones anidadas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta