Здравствуйте, eao197, Вы писали:
E>Ну, например, потому, что в коде инициировать compile-time вычисления ты все равно будешь явно. Ты же пишешь CompileTimeFactorial. Если же вспомнить пример Oyster-а, где не видно по записи, какое именно вычисление будет использоваться, то его реализация так же разбита на две разные части.
Ну понятно, что в реализации надо уже явно указывать, что вычисление на этапе компиляции производится — куда уж тут деться. По-моему, Nemerle тут хорош хотя бы уже тем, что можно как явно указывать что вычисление производится на этапе компиляции, так и проводить его неявно. Что нравится, то и делаешь.
Кстати, можно написать макрос, который будет пытаться вычислить результат любой функции на этапе компиляции или, если не получится, вставлять её вызов

Естественно, такой макрос можно будет использовать только для детерминированных функций (разумное требование для любых compile-time вычислений).
E>Если же ты о том, что для реализации compile-time вычислений приходиться писать свой код вместо библиотечного, то у меня на этот счет совсем другое мнение -- я думаю, что кодогенерация здесь может быть выгоднее. Зачем при каждой компиляции повторно перевычислять то, что можно вычислить один раз, сохранить в файле и все.

Полностью согласен с тобой — давай экономить время на этапе компиляции! Миллисекунды на дороге не валяются!! Про удобство использования такой схемы скромно умолчу...