ну так оно взаимосвязано. beam гарантирует, что для хвостовой рекурсии TCO будет обязательно выполнено, не вижу смысла разделять в данном контексте эти понятия.
ну так оно взаимосвязано. beam гарантирует, что для хвостовой рекурсии TCO будет обязательно выполнено, не вижу смысла разделять в данном контексте эти понятия.
хотя бы потому что обычно безусловный переход быстрее вызова процедуры
Тока вызов процедуры добавляет тебе «аккумулятор» на уровне ВМ, а переписывание функции в хвостовую рекурсию заставляет тебя добавлять аккумулятор на высоком уровне самого языка
Тока вызов процедуры добавляет тебе «аккумулятор» на уровне ВМ, а переписывание функции в хвостовую рекурсию заставляет тебя добавлять аккумулятор на высоком уровне самого языка
Компиляторы такие вещи запросто оптимизируют, видимо в BEAM не так, или не всегда так