Size: a a a

2018 July 03

NK

ID:414983998 in graalvm_ru
Не, это не дело
источник

NK

ID:414983998 in graalvm_ru
Не со всеми рекурсиями такое пройдет
источник

ЮБ

Юрий Бадальянц in graalvm_ru
Скала тоже разворачивает, если это возможно
источник

ПФ

Паша Финкельштейн in graalvm_ru
не со всеми, да
источник

NK

ID:414983998 in graalvm_ru
continuation passing style - я так понял это самый продвинутый алгоритм
источник

ПФ

Паша Финкельштейн in graalvm_ru
ID:414983998
continuation passing style - я так понял это самый продвинутый алгоритм
но там есть вероятность хипполюшна же )
источник

NK

ID:414983998 in graalvm_ru
Есть, поэтому по хорошему нужно давать возможность делать это мануально для каждого отдельного метода, через декораторы например, если язык позволяет
источник

ПФ

Паша Финкельштейн in graalvm_ru
ну вот в котлине есть ключевое слово tailrec
источник

NK

ID:414983998 in graalvm_ru
И это правильно
источник

OS

Oleg Shelajev in graalvm_ru
ID:414983998
Кстати, тут недавно с Алоном Закаем обсуждали тему tail call optimization. Как оказалось такое умеет делать только babel (весьма топорно, просто разворачивая в цикл со вспомогательным стеком), Closure и хаскель, GCC со специальным флагом (C++ спека этого не требует). И по сути все. Java не делает, при чем по соображениям безопасности, так как меняется контекст исполнения. Я так понимаю граль тоже?
да, насколько я понимаю пока не делает в общем случае точно
источник

OS

Oleg Shelajev in graalvm_ru
ID:414983998
Просто вы тут марсианские темы обсуждаете) граль пока сугубо для гиков)
вот это меня кстати слегка расстраивает )
источник

OS

Oleg Shelajev in graalvm_ru
всяко же можно погонять свои performance тесты на грале
источник

OS

Oleg Shelajev in graalvm_ru
не в специальных бенчмарках ковыряться, а просто вот взять и на нормальном проекте позапускать
источник

AT

Andrew Tropin in graalvm_ru
ID:414983998
Кстати, тут недавно с Алоном Закаем обсуждали тему tail call optimization. Как оказалось такое умеет делать только babel (весьма топорно, просто разворачивая в цикл со вспомогательным стеком), Closure и хаскель, GCC со специальным флагом (C++ спека этого не требует). И по сути все. Java не делает, при чем по соображениям безопасности, так как меняется контекст исполнения. Я так понимаю граль тоже?
в Clojure нет TCO
источник

AT

Andrew Tropin in graalvm_ru
источник

NK

ID:414983998 in graalvm_ru
Возможно. Я имел ввиду это: https://github.com/cjfrisz/clojure-tco
источник

AT

Andrew Tropin in graalvm_ru
грязь 😱, хотя забавно видеть, что можно сделать на макросах.
но судя по всему эта штука не пользуется особой популярностью
источник

NK

ID:414983998 in graalvm_ru
Клозюра вообще не пользуется популярностью, хотя зря
источник

NK

ID:414983998 in graalvm_ru
Есть еще такое: https://github.com/cjfrisz/tools.cps
источник

AT

Andrew Tropin in graalvm_ru
ID:414983998
Клозюра вообще не пользуется популярностью, хотя зря
ну как сказать, не самый популярный язык, но вроде довольно живой и у нас популярностью вполне пользуется =)
источник