> -- hothing писал(а):
> Нет. Технически возможно, но программист теряет контроль.Пограмист не в состоянии самоограничиться использованием только локальных переменных? Ну получит код вычисляемый в рантайме, а не в компилтайме. Это не является ошибкой.
Зато не надо трогать фонтэнд, а всю эту оптимизацию можно сделать в виде плагина к ББ не трогая компилятор вообще.
> -- hothing писал(а):
> Зачем гарантировать? В обычных программах разве есть гарантия отсутствия бесконечной рекурсии или цикла? Здесь же компилятор просто исполнитель "программы".Зачем? Ну ок, компилятор будет падать на переполнении стека или компилировать вечно. Это именно то, чего мы и ожидаем от компилятора! <_<
> -- hothing писал(а):
> И как гарантировать возврат значения? Например FUNCTION(a,b) RETURN IF (a > 2) THEN b END; END что вернет при a <= 2?Это было про обычный if и case. Для expression варианта он конечно же нужен. Хотя зачем сам этот expression-вариант нужен - я не знаю. Ну и кроме фонтэнда ещё надо будет допиливать внутреннее представление и, соответственно, кодогенератор. Оно не стоит того.