Здравствуйте, eao197, Вы писали:
O>>На Nemerle тоже не даст, естественно, — посмотри, что случится при вызове Oyster.Macro.Fact(0)
E>Какой именно из вариантов?
?
Ты сказал, что шаблон выдаст ошибку компиляции, если ноль. Так вот Nemerle сделает то же самое.
O>>Ну и ещё преимущество _имхо_ в том, что фактически пишется тот же код на Nemerle, а не на каком-то другом подъязыке, — просто он выполнится во время компиляции.
E>Ну с виду так не скажешь
Из-за <[, ]> и $(). При этом нужно помнить, к переменной из какого контекста ты обращаещься и что следует возвращать как результат макроса.
Поэтому _имхо_ — не хочется об этом дискутировать.
E>Кстати, я забыл, в результате работы макроса можно ли сгенерировать код, который внутри к другому макросу будет обращаться? Т.е. обращение к макросу не внутри тела макроса, в том коде который макрос производит? Что-то на эту тему было, но уже не помню где
Макрос всегда развернётся внутри. А зачем такое надо? Ведь макрос всё равно развернётся в итоге — какая разница, внутри или снаружи это произойдёт?