Python: вложенные лямбды - `s_push: переполнение стека парсера Ошибка памяти`

Я недавно наткнулсяэта статья который описывает, как кодировать FizzBuzz, используя только Procs в Ruby, и, поскольку мне было скучно, я подумал, что было бы неплохо попытаться реализовать то же самое в Python, используя лямбды.

Я попал в раздел, где вы создаете числа, используя вложенные функции, и написал следующий скрипт на 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)

Числа от нуля до пятнадцати работают нормально, но если я попытаюсь создать число 100, файл не запустится из-за следующей ошибки:

s_push: переполнение стека парсера
MemoryError

Я должен закомментировать это для того, чтобы файл вообще запускался.

Отстой такого рода - есть ли способ обойти это ограничение, чтобы я мог произвольно вкладывать лямбда-выражения и вызовы функций без сбоев Python и нехватки памяти?

Или, альтернативно, есть ли какой-нибудь трюк с лямбда-исчислением, который я могу использовать, чтобы выразить число 100, не имея так много вложенных функций?

Ответы на вопрос(3)

Ваш ответ на вопрос