Здравствуйте, hardcase, Вы писали:
L>>Знаешь, я как-то об этом уже писал, но поиском не нашёл. Если вкратце, то такие вещи имхо нужно делать средствами языка. Например, в Haskell это будет функция. А типы выведет компилятор.
H>Макросы — это и есть средство языка Мы на языке описываем его самое и получаем новый язык — чуть более удобный и богатый.
Я имел в виду first-class средства.
Макрос типа grammar декларирует новый язык. Думаю, что запихнуть туда что-то снаружи тяжело, если вообще возможно — я не знаю его реализации. Соответственно, расширив что-то снаружи мы не сможем это подключить внутрь нашей грамматики. Например, для упрощения описания правил. Или даже правило из одного макроса использовать в другом (хотя тут не уверен — не знаю как реализован). Как только мы стараемся позволить то или это в нашем новом языке — макрос сильно усложняется. А ведь всё это уже есть в нашем host-языке, только синтаксис отличается.
Макрос же типа foreach в Haskell реализуется
обычной функциейАвтор: lomeo
Дата: 09.08.07
. Стоит ли реализовывать его в виде макроса?
Да! Напоминаю, что я сюда пришёл чуть-чуть пофлеймить, так что если я излишне категоричен, не считай меня противником макросов