Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 27.09.13 09:53
Оценка:
Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)
Что было реализовано криво/противоречиво/неудобно/недостаточно?
И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?

(конкретно проблемы с syntax меня НЕ интересуют, а вот всякие другие — очень даже. Особенно с цитатами, если есть.)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Недостатки макросистемы Nemerle
От: hi_octane Беларусь  
Дата: 27.09.13 10:58
Оценка:
J>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

— Разделение на стадии
— Как следствие на ранних стадиях можно сделать что угодно, но там ещё нет информации о типах, а на последующих стадиях информация о типах уже есть, но возможстей меньше
— То что в N1 нет "макротипов", т.е. типов которые существуют только в памяти компилятора, а в IL описываются чем-то другим, например одним Int32 (вроде решаемо допиливанием компилятора)
Re[2]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 27.09.13 11:06
Оценка:
Здравствуйте, hi_octane, Вы писали:

J>>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)


_>- Разделение на стадии

_>- Как следствие на ранних стадиях можно сделать что угодно, но там ещё нет информации о типах, а на последующих стадиях информация о типах уже есть, но возможстей меньше
_>- То что в N1 нет "макротипов", т.е. типов которые существуют только в памяти компилятора, а в IL описываются чем-то другим, например одним Int32 (вроде решаемо допиливанием компилятора)

Спасибо! А можно немножко подробнее (ссылки на примеры тоже приветствуются)? Я ж не настоящий сварщик
Разделение на стадии как-то решено в N2?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Недостатки макросистемы Nemerle
От: hi_octane Беларусь  
Дата: 27.09.13 14:11
Оценка: 12 (1)
J>Спасибо! А можно немножко подробнее (ссылки на примеры тоже приветствуются)? Я ж не настоящий сварщик
Ну вот например добавление IDisposable
Автор: VladD2
Дата: 26.08.11
из-за стадий рассыпано на два макроса, и с первого раза такое новичку написать такое сложно. Много информации можно получить поискав по "BeforeInheritance" с ником автора VladD2 (он обычно подробно по стадиям рассказывает).

Макротипов просто нету, так что примеров увы не найду только описание хотелок
Автор: hi_octane
Дата: 03.06.11
, ищется поиском в этой ветке форума по "макротип".

J>Разделение на стадии как-то решено в N2?

Тут может ответить только кто-то из зондер-команды, но по последней информации до релиза Nitra, над N2 никто работать не будет.
Re: Недостатки макросистемы Nemerle
От: _NN_ www.nemerleweb.com
Дата: 27.09.13 16:46
Оценка: 12 (1)
Здравствуйте, jazzer, Вы писали:

J>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>Что было реализовано криво/противоречиво/неудобно/недостаточно?
Вот API компилятора не очень удобен.
А местами даже очень не удобен, особенно в плане валидации данных

Иногда еще не хватает некоторых функций.
Сходу не вспомню, но вот скажем MethodRef with IsProperty.

Бывают еще странные ошибки типа ICE и т.п. , и не знаешь кто виноват , ты или компилятор =)
Например
  Код
namespace MacroLibrary1
{
  [MacroUsage(MacroPhase.WithTypedMembers, MacroTargets.Assembly)]
  macro Macro2()
  {
    Macro2Impl.DoTransform(Macros.ImplicitCTX())
  }
  
  module Macro2Impl
  {
    public DoTransform(typer : Typer) : void
    {
      Macros.DefineCTX(typer);
      
      typer.Env.Define(<[ decl: partial class A { } ]>).Compile();
      typer.Env.Define(<[ decl: partial class B { } ]>).Compile();
      
      typer.Env.Define(<[ decl: partial class A : B { } ]>).Compile();
    }
  }
}

  Ошибка

C:\Program Files (x86)\Nemerle\Net-4.0\Nemerle.MSBuild.targets(289,5): error : internal compiler error: assertion ``member_list == []'' failed in file ncc\hierarchy\TypeBuilder.n, line 1920
at Nemerle.Compiler.TypeBuilder.AddEnumMembers()
at Nemerle.Compiler.TypeBuilder.FixupDefinedClass()
at Nemerle.Compiler.GlobalEnv.Define(ClassMember td, Boolean do_fixup)
at MacroLibrary1.Macro2Impl.DoTransform(Typer typer) in d:\Projects\test\ConsoleApplication36\MacroLibrary1\Macro2.n:line 40
at MacroLibrary1._N_operator601771663_4359Macro.Run(Typer _N__1, list`1 parms) in d:\Projects\test\ConsoleApplication36\MacroLibrary1\Macro2.n:line 29
at Nemerle.Compiler.TypesManager.AttributeMacroExpansion.Expand()
at Nemerle.Compiler.TypesManager.ExpandMacros()
at Nemerle.Compiler.TypesManager.Run()
at Nemerle.Compiler.ManagerClass.Run()
at Nemerle.CommandlineCompiler.MainClass.main_with_catching()



Вместо MacroPhase.WithTypedMembers, надо написать MacroPhase.BeforeInheritance, но это понять из сообщения практически невозможно.


J>И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?

J>(конкретно проблемы с syntax меня НЕ интересуют, а вот всякие другие — очень даже. Особенно с цитатами, если есть.)
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Недостатки макросистемы Nemerle
От: Аноним  
Дата: 27.09.13 17:33
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>Что было реализовано криво/противоречиво/неудобно/недостаточно?

Сразу оговорюсь: опыта написания макросов практически нет, все перечисленные ниже недостатки можно так или иначе обойти.

— не работает AllowMultiple = false для макроатрибутов; есть бага в трекере
— нет возможности (или я о ней не знаю) отменить работу макроса на следующей стадии, если на текущей стало понятно, что его дальнейшая работа не имеет смысла — из-за этого пользователю макры в процессе компиляции могут выводиться лишние (наведенные) ошибки
— нет возможности декларативно точно специфицировать MacroTargets — скажем, указать, что макрос можно применить только к классам, но не делегатам; "недекларативно" это сделать можно, но с ограничениями: на стадии BeforeInheritance TypeBuilder.IsDelegate возвращает всегда false (на стадии BeforeTypedMembers и дальше — работает правильно)
— не все можно "проквазицитировать" — алиасы, например, в квазицитаты вставляются с ограничениями; тоже есть бага в трекере
— пользовательские параметры макроса нетипизированы — точнее, всегда имеют тип PExpr/list[PExpr]

J>И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?


Привел актуальные проблемы современной версии Nemerle.

А вы с какой целью интересуетесь? А то может я слишком низкоуровневые проблемы привел?
Re: Недостатки макросистемы Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.09.13 21:00
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>Что было реализовано криво/противоречиво/неудобно/недостаточно?

У Немерла одни главный недостаток — медленная компиляция. Остальное можно пережить. Еще не всегда качественная отладка и глюки ИДЕ.

Из мелочей — можно было бы АПИ отрефакторить.

J>И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?


N2/Nitra — это не новая версия Немерла. Это средство для ее (и не только ее) создания.

На сегодня мы фиксим все недостатки немерла связанные с парсингом. А именно: неполную/не гибкую расширяемость синтаксиса, плохое восстановление после обнаружения ошибок, плохую поддержку внешних ДСЛ-ей.

J>(конкретно проблемы с syntax меня НЕ интересуют, а вот всякие другие — очень даже. Особенно с цитатами, если есть.)


Имевшиеся проблемы с цитатами мы пофиксили в последних версиях. Цитирование стало значительно удобнее. Многие ограничения сняты. Хотя кое-что осталось. Например, довольно сложно сделать цитатой типы с параметрами типов. Трудно объявить тип в глобальном пространстве имен (точнее не трудно, а надо кое-что знать, но это приседание), нет возможности создать цитатами некоторых языковых конструкций (например, конструкции type с произвольным именем).

В Найтре проблемы цетирования будут решены полностью, так как оно будет создаваться автоматически. Но это следующая стади. Пока что в следующем месяце планируется открыть программу раннего доступа к парсеру Найтры. Для пользователей немерла это будет нечто вроде продвинутой версии PegGrammar.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Недостатки макросистемы Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.09.13 21:12
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>- Разделение на стадии

_>- Как следствие на ранних стадиях можно сделать что угодно, но там ещё нет информации о типах, а на последующих стадиях информация о типах уже есть, но возможстей меньше
_>- То что в N1 нет "макротипов", т.е. типов которые существуют только в памяти компилятора, а в IL описываются чем-то другим, например одним Int32 (вроде решаемо допиливанием компилятора)

В Найтре мы планируем сделать концепцию двух стадий. На первой бедет создаваться полностью типизированное представление кода проекта на конечном языке, а затем будет производиться кодогенерация в другой (более низкоуровневый язык).

Под конечным языком я понимаю некую сущность формируемую при сборке всех языковых расширений в единое целое. Скажем если язык поддерживает макросы, то они вводят полноценные синтаксические конструкции.

Главное различие с Немерлом будет заключаться в том, что Немерл занимается трансформацией кода во время типизации, а языки основанные на Н2 будут производить трансформацию уже после типизации.

По сути Немерл типизирует разложенные до примитивов PExpr (и другие деревья жестко заложенные в ParseTree.n), а макросы разлагают синтаксические расширения приводя их к этим типам. В Найтре будут типизироваться сами синтаксические расширения, а "макросы" будут преобразовывать их в исполняемый код или во что-то нужное автору языка.

Это должно, например, упростить написание макросов, в новой версии Немерла которая будет основана на Найтре, и позволить сделать качественную поддержку IDE.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Недостатки макросистемы Nemerle
От: Аноним  
Дата: 29.09.13 14:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, hi_octane, Вы писали:


_>>- Разделение на стадии

_>>- Как следствие на ранних стадиях можно сделать что угодно, но там ещё нет информации о типах, а на последующих стадиях информация о типах уже есть, но возможстей меньше
_>>- То что в N1 нет "макротипов", т.е. типов которые существуют только в памяти компилятора, а в IL описываются чем-то другим, например одним Int32 (вроде решаемо допиливанием компилятора)

VD>В Найтре мы планируем сделать концепцию двух стадий. На первой бедет создаваться полностью типизированное представление кода проекта на конечном языке, а затем будет производиться кодогенерация в другой (более низкоуровневый язык).


1) Макросы будут двух разных типов?
2) Промежуточный язык определен уже? с чего он будет калька? макросы будет поддерживать?
Re: Недостатки макросистемы Nemerle
От: Ziaw Россия  
Дата: 30.09.13 07:05
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>Что было реализовано криво/противоречиво/неудобно/недостаточно?

Генерация типов и методов для них. IDE просто шалеет от таких фокусов, да и не только IDE, со стадиями тоже проблем хватает. Хотя, на мой взгляд, это одна из наиболее используемых сейчас техник метапрограммирования.
Re[2]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 30.09.13 16:04
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, jazzer, Вы писали:


J>>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>>Что было реализовано криво/противоречиво/неудобно/недостаточно?

Z>Генерация типов и методов для них. IDE просто шалеет от таких фокусов, да и не только IDE, со стадиями тоже проблем хватает. Хотя, на мой взгляд, это одна из наиболее используемых сейчас техник метапрограммирования.


Я так понимаю, здесь ты говоришь об особенностях нынешней реализации?
Потому что я спрашиваю о системе макросов в целом, как она описана в статьях. Не о имеющихся технических багах компилятора, а о фатальных багах самой системы, если таковые имеются.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 30.09.13 16:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, jazzer, Вы писали:


J>>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>>Что было реализовано криво/противоречиво/неудобно/недостаточно?

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


А>- не работает AllowMultiple = false для макроатрибутов; есть бага в трекере

А>- нет возможности (или я о ней не знаю) отменить работу макроса на следующей стадии, если на текущей стало понятно, что его дальнейшая работа не имеет смысла — из-за этого пользователю макры в процессе компиляции могут выводиться лишние (наведенные) ошибки
Т.е. нужен более богатый механизм сообщения об ошибках?

А>- нет возможности декларативно точно специфицировать MacroTargets — скажем, указать, что макрос можно применить только к классам, но не делегатам; "недекларативно" это сделать можно, но с ограничениями: на стадии BeforeInheritance TypeBuilder.IsDelegate возвращает всегда false (на стадии BeforeTypedMembers и дальше — работает правильно)

Почему нет возможности? У макросов же есть всякие свойства (типа BeforeInheritance/BeforeTypedMembers) — надо просто добавить соответствующее? Или надо что-то радикально менять?

А>- не все можно "проквазицитировать" — алиасы, например, в квазицитаты вставляются с ограничениями; тоже есть бага в трекере


Это чисто техническая проблема? Или надо что-то радикально менять, чтоб это пофиксить?

А>- пользовательские параметры макроса нетипизированы — точнее, всегда имеют тип PExpr/list[PExpr]


Ну вот это уже звучит похоже на принципиальное ограничение. Или нет?


J>>И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?


А>Привел актуальные проблемы современной версии Nemerle.


А>А вы с какой целью интересуетесь? А то может я слишком низкоуровневые проблемы привел?


Меня интересует система в целом, не текущие баги, которые можно исправить без изменения макросистемы, ее синтаксиса и т.п.
Если в двух словах — можно ли считать макросистему Немерле, как она описана в статьях/спецификациях, совершенной? Или с тех пор нашлись фатальные недостатки, которые можно пофиксить, только изменив саму систему? (при этом syntax не интересует (там можно не одну сотню копий сломать), но интересует все остальное).
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 30.09.13 16:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, jazzer, Вы писали:


J>>Народ, кто много макросов пишет — с какими недостатками макросистемы Nemerle вы столкнулись? (Я имею в виду сам движок макросов, а не стандартные макросы из поставки)

J>>Что было реализовано криво/противоречиво/неудобно/недостаточно?

VD>У Немерла одни главный недостаток — медленная компиляция. Остальное можно пережить. Еще не всегда качественная отладка и глюки ИДЕ.


Это фигня. Меня сама макросистема интересует.

VD>Из мелочей — можно было бы АПИ отрефакторить.


Это где-то обсуждалось уже?

J>>И что из этого и как это было пофикшено в N2 (или в самом Nemerle, но позже написания учебных статей на rsdn.ru и, соответственно, не описанных там)?


VD>N2/Nitra — это не новая версия Немерла. Это средство для ее (и не только ее) создания.


VD>На сегодня мы фиксим все недостатки немерла связанные с парсингом. А именно: неполную/не гибкую расширяемость синтаксиса, плохое восстановление после обнаружения ошибок, плохую поддержку внешних ДСЛ-ей.


Т.е. все остальное, кроме расширенного синтаксиса, хорошо и устраивает?

J>>(конкретно проблемы с syntax меня НЕ интересуют, а вот всякие другие — очень даже. Особенно с цитатами, если есть.)


VD>Имевшиеся проблемы с цитатами мы пофиксили в последних версиях. Цитирование стало значительно удобнее. Многие ограничения сняты. Хотя кое-что осталось. Например, довольно сложно сделать цитатой типы с параметрами типов. Трудно объявить тип в глобальном пространстве имен (точнее не трудно, а надо кое-что знать, но это приседание), нет возможности создать цитатами некоторых языковых конструкций (например, конструкции type с произвольным именем).


Это чисто технические ограничения текущей реализации? Или принципиальные ограничения самой макросистемы, как она в данный момент сформулирована?
Если второе, то что изменилось по сравнению с тем, что написано в статьях и вики?

VD>В Найтре проблемы цетирования будут решены полностью, так как оно будет создаваться автоматически. Но это следующая стади. Пока что в следующем месяце планируется открыть программу раннего доступа к парсеру Найтры. Для пользователей немерла это будет нечто вроде продвинутой версии PegGrammar.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Недостатки макросистемы Nemerle
От: Ziaw Россия  
Дата: 01.10.13 02:28
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Я так понимаю, здесь ты говоришь об особенностях нынешней реализации?

J>Потому что я спрашиваю о системе макросов в целом, как она описана в статьях. Не о имеющихся технических багах компилятора, а о фатальных багах самой системы, если таковые имеются.

Если ты имеешь в виду баги, я говорю не о них. Можно ли назвать багом поведение, которое не устраивает, но исправить его без переделки всей системы невозможно? Фатальные это баги или нет можно будет судить после выхода найтры. Основная проблема это стадии, генерировать сейчас код типов который опирается на информацию о других типах проблематично. В найтре собираются уйти от текущих стадий, но насколько это будет юзабельно пока непонятно.

Для примера задачи: в макросе надо сгенерировать метод, принимающий на вход аргумент, с типом выражения, которое передано в этот макрос. Это в принципе возможно, но есть куча граблей которые приходится аккуратно обходить, а IDE архитектурно не рассчитана на такие фокусы.
Re[4]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 01.10.13 02:39
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, jazzer, Вы писали:


J>>Я так понимаю, здесь ты говоришь об особенностях нынешней реализации?

J>>Потому что я спрашиваю о системе макросов в целом, как она описана в статьях. Не о имеющихся технических багах компилятора, а о фатальных багах самой системы, если таковые имеются.

Z>Если ты имеешь в виду баги, я говорю не о них. Можно ли назвать багом поведение, которое не устраивает, но исправить его без переделки всей системы невозможно?


Если под системой ты имеешь в виду ее спецификацию, то да, я именно о таком и хочу знать.

Z>Фатальные это баги или нет можно будет судить после выхода найтры. Основная проблема это стадии, генерировать сейчас код типов который опирается на информацию о других типах проблематично. В найтре собираются уйти от текущих стадий, но насколько это будет юзабельно пока непонятно.


То есть стадии сами по себе — это принципиальная проблема? Потому что не выходит по-человечески поговорить с типизатором?
Или это проблема API типизатора?

Z>Для примера задачи: в макросе надо сгенерировать метод, принимающий на вход аргумент, с типом выражения, которое передано в этот макрос. Это в принципе возможно, но есть куча граблей которые приходится аккуратно обходить, а IDE архитектурно не рассчитана на такие фокусы.


А можно примерно то, что приходится писать сейчас (даже если забыть про IDE), и как оно должно бы выглядеть в идеале?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Недостатки макросистемы Nemerle
От: hi_octane Беларусь  
Дата: 01.10.13 15:30
Оценка:
J>А можно примерно то, что приходится писать сейчас (даже если забыть про IDE), и как оно должно бы выглядеть в идеале?

В этом плодотворном обсуждении я задвигал некое видение идеала макросистемы
Автор: hi_octane
Дата: 03.06.11
, вроде сначала сказали что не взлетит из-за скорости, но позже в каких-то постах Wolfhound'а были упоминания что в N2 что-то похожее если не по реализации то по духу получается.

ЗЫ. У тебя такой интерес с работой не связан случайно?
Re[6]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 01.10.13 17:19
Оценка:
Здравствуйте, hi_octane, Вы писали:

J>>А можно примерно то, что приходится писать сейчас (даже если забыть про IDE), и как оно должно бы выглядеть в идеале?


_>В этом плодотворном обсуждении я задвигал некое видение идеала макросистемы
Автор: hi_octane
Дата: 03.06.11
, вроде сначала сказали что не взлетит из-за скорости, но позже в каких-то постах Wolfhound'а были упоминания что в N2 что-то похожее если не по реализации то по духу получается.


Спасибо, почитаю

_>ЗЫ. У тебя такой интерес с работой не связан случайно?


Связан
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Недостатки макросистемы Nemerle
От: Ziaw Россия  
Дата: 01.10.13 20:48
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Если под системой ты имеешь в виду ее спецификацию, то да, я именно о таком и хочу знать.


Спецификация? Что это?

J>То есть стадии сами по себе — это принципиальная проблема? Потому что не выходит по-человечески поговорить с типизатором?


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

J>Или это проблема API типизатора?


Да нет, концептуальная. Но это не шоу-стоппер, почти всегда можно выкрутиться и добиться нужного эффекта обходными путями.

J>А можно примерно то, что приходится писать сейчас (даже если забыть про IDE), и как оно должно бы выглядеть в идеале?


Сейчас это выглядит так — https://github.com/Ziaw/nor/blob/master/NRails.Macros/Mvc/ViewModel.n
Код пинать не надо На этом проекте я немерле изучал.
Re[7]: Недостатки макросистемы Nemerle
От: hi_octane Беларусь  
Дата: 02.10.13 00:48
Оценка:
_>>ЗЫ. У тебя такой интерес с работой не связан случайно?
J>Связан

ГЫ Конкуренты догоняют

Чисто телепатически, учитывая что требование в работе у нас всегда одно, тебе будут интересны следующие штуки:

NUDA &mdash; Nemerle to GPU, исходники открыты, краткое описание в инете есть, полное вроде является чьей-то дипломной или кандидатской, тоже реально найти.

NemerleWeb — может быть интересен тебе тем, что включает в себя транслятор Nemerle->JavaScript, подглядывая в который написать трансляцию куда-то существенно проще.

Возможностей макросистемы хватает для того чтобы получить практически любую нужную скорость, кроме, наверное, скорости компиляции. Трансляция от изменнённого до неузнаваемости синтаксическими и обычными макросами, до выхлопа в виде C без чистки памяти (new в пул, пул грохается разом когда стал слишком большой), и без поддержки отладчика, пишется, если подглядывать в эти два проекта, человеко-месяцев за 6. Только годного человека.

С N2 будет явно более лучше работать, но скоро выходящая в паблик Nitra это только убер-парсер, типизатора и транслятора там не будет. Роадмап по N2 тут.
Автор: VladD2
Дата: 09.09.13
В нём интересна последняя строка, другое дело что рабочий сабсет N2 в паблик может и не выйти вовсе, сразу какая-нить бета или релиз. Т.е. ждать или не ждать, и не получится ли так что пока будете пилить что-то на N1 выйдет что-то от N2, годное настолько что уже напиленное для N1 будет проще выбросить, чем закончить — совершенно 50/50.

ЗЫ. Если же телепатия промазала, и вы не Nemerle допиливать собрались, а новый язык по мотивам писать, то рекомендации совсем другие будут.
Re[8]: Недостатки макросистемы Nemerle
От: jazzer Россия Skype: enerjazzer
Дата: 02.10.13 16:45
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>ЗЫ. Если же телепатия промазала, и вы не Nemerle допиливать собрались, а новый язык по мотивам писать, то рекомендации совсем другие будут.


Телепатия промазала, так что жду рекомендаций с нетерпением
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.