Я узнал о концепции Оптимизация вызовов в хвосте (TCO) из этого блога: Спой мне песню переполнения стека: Оптимизация музыкального вызова в хвосте .
Переходя к этой концепции (или «функции», или «технике оптимизации»), я узнал, что использование TCO в python не является питонским способом, как объясняет Гвидо:
http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html http://neopythonic.blogspot.com/2009/04/final-words-on-tail-calls.html
Дальнейшая проверка привела к тому, что Джеймс Таубер обнаружил блог, в котором рассказывается о гусеницах, батутах и продолжении проезда гусеницах, батутах и продолжении, проходящих мимо Джеймса Таубера.
Джеймс Таубер показывает, как использование Thunks, Trampolines и Continuation для решения проблемы стекового вызова рекурсивных функций, но некоторые объяснения трудно понять.
Итак, вот некоторые из моих запросов, которые я хотел бы прояснить:
- Может ли кто-нибудь здесь дать понятное объяснение этим понятиям?
- эта концепция пытается реализовать TCO в python или она отличается от TCO?
- Поскольку Гвидо называет TCO
not a pythonic way
, поскольку TCO не обеспечивает надлежащего отслеживания, соответствует ли концепция Thunks, Trampoline and Continuation passing
требованию сохраненияtracebacks?