Здравствуйте, Слоноежик, Вы писали:
С>и макроса который заставляет вычислить ф-цию в время компиляции
С>С>template eval(A...) { alias A eval; }
С>//использование
С>static result = eval!(factorial(5));
С>
С>И в отличии от Nemerle не надо для каждой функции писать макрос обертку.
Дык, интерпретатор ведь.
ОК. Уложним условие. Попробуй создать аналог вот такой примитивной вещи:
macro LoadStringLiteralFromFile(fileName : string)
{
def str File.ReadAllText(fileName);
<[ $(str : string) ]>
}
Что не выходит?
VD>>В обличии от D или C++ мы вольны произвести в макросе вычисления любой сложности. Так если у нас уже есть нужная функция которую нужно вычислить во время компиляции, то мы просто вызваем ее в макросе и получаем требуемый результатм.
VD>>То есть для нас нет разницы между кодом программы и метакодом. В D же и в С++ мы вынждены писать метакод на птичьех языках которые сильно отличаются от того языка что мы вынуждены применять в реальной программе.
С>Ну D это уже не относится.
Еще как отностися. Метакод в D пишется не на базовом D, а на статических расширениях.
... << RSDN@Home 1.2.0 alpha rev. 637>>