Re[27]: Снова о Nemerle или профанация не пройдет :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.02.06 06:17
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>А в плюсах не так, что ли?


А при чем здесь плюсы? В плюсах вообще нет возможностей, предоставляемых Nemerle.

Д>Давайте лучше временно придушим свою страсть к критиканству, и подумаем, как можно решить эту проблему лучше. Я полагаю, разработчики языка будут рады любым дельным предложениям.

+1

Так же к этому предложению я бы добавил прекратить выискивать в данном обсуждении противников Nemerle.

Д>Другой вариант — это разграничивать область действия макросов в явном виде, когда это необходимо.


Эти области могут сильно пересекаться и твое решение не будет работать. Так, я пытался приводить пример описания класса агента:
agent_class LoadBalancer
  message MsgAddNode
    { /* Здесь должно быть описание класса MsgAddNode. */
      // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
      autosubscribe NodeListMonitor;
      ...
    }
  event EvtAddNode( m : MsgAddNode )
    {
      // В реализации метода так же могут потребоваться другие макропакеты.
    } autosubscribe MsgAddNode priority 0;


Д>Есть еще идеи?


1. Позволять использовать квалифицированное имя для расширений синтаксиса в случае конфликтов:
agent_class LoadBalancer
  message MsgAddNode
    { /* Здесь должно быть описание класса MsgAddNode. */
      // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
      alien.autosubscribe NodeListMonitor;
      ...
    }
  event EvtAddNode( m : MsgAddNode )
    {
      // В реализации метода так же могут потребоваться другие макропакеты.
    } sobjectizer.autosubscribe MsgAddNode priority 0;

Причем, чтобы достаточно было указать минимально различимое имя (не полное, которое может быть очень длинным).

В качестве альтернативного синтаксиса для указания квалифицированного имени
autosubscribe#sobjectizer MsgAddNode ...;


2. Позволить ввести псевдонимы для ключевых слов.
alias autosubscribe from Macro.Library.Alien to msg_subscribe;
alias autosubscribe from SObjectizer.Macro.Library to event_subscribe;
agent_class LoadBalancer
  message MsgAddNode
    { /* Здесь должно быть описание класса MsgAddNode. */
      // Для описания какой-то части потребовалось воспользоваться средствами другого макропакета.
      msg_subscribe NodeListMonitor;
      ...
    }
  event EvtAddNode( m : MsgAddNode )
    {
      // В реализации метода так же могут потребоваться другие макропакеты.
    } event_subscribe MsgAddNode priority 0;


И ограничить область действия alias-ов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.