Здравствуйте, Oyster, Вы писали:
O>На Nemerle тоже не даст, естественно, — посмотри, что случится при вызове Oyster.Macro.Fact(0)
Какой именно из вариантов?
O>В общем-то, главное преимущество Nemerle тут в том, что можно проворачивать более сложные вычисления в compile-time, чем на шаблонах.
Ну дык это в Nemerle и подкупает. Т.к. в сложных случаях compile-time вычисления на шаблонах C++, имхо, лучше элементарной кодогенерацией заменять.
O>Ну и ещё преимущество _имхо_ в том, что фактически пишется тот же код на Nemerle, а не на каком-то другом подъязыке, — просто он выполнится во время компиляции.
Ну с виду так не скажешь

Из-за <[, ]> и $(). При этом нужно помнить, к переменной из какого контекста ты обращаещься и что следует возвращать как результат макроса.
Кстати, я забыл, в результате работы макроса можно ли сгенерировать код, который внутри к другому макросу будет обращаться? Т.е. обращение к макросу не внутри тела макроса, в том коде который макрос производит? Что-то на эту тему было, но уже не помню где