System.Linq.Expression
От: Visor2004  
Дата: 21.07.11 16:10
Оценка:
Умеет ли Nemerle каким-то образом генерировать Expression? типа как C#


Expression<Func<int>> expression = () => 5;
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: System.Linq.Expression
От: Ziaw Россия  
Дата: 21.07.11 16:45
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Умеет ли Nemerle каким-то образом генерировать Expression? типа как C#



V>
V>Expression<Func<int>> expression = () => 5;
V>


Nemerle.Linq.ToExpression macro

using Nemerle.Linq;

def expression = ToExpression(() => 5);
Re[2]: System.Linq.Expression
От: Visor2004  
Дата: 21.07.11 17:18
Оценка:
Здравствуйте, Ziaw, Вы писали:

 private ConstructorParameterValue ( _ : NToken ) : Expression [ Func [ IServiceSet, object ] ]
    {
      Nemerle.Linq.ToExpression(
      a =>
      {
        null
      });
    }


вываливается с ошибкой

typing fails on delayed macro

Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[3]: System.Linq.Expression
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.07.11 19:03
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>
V> private ConstructorParameterValue ( _ : NToken ) : Expression [ Func [ IServiceSet, object ] ]
V>    {
V>      Nemerle.Linq.ToExpression(
V>      a =>
V>      {
V>        null
V>      });
V>    }
V>


V>вываливается с ошибкой

V>

V>typing fails on delayed macro


Надо подключить макро-сборку Nemerle.Linq.dll и открыть пространство имен Nemerle.Linq
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: System.Linq.Expression
От: Ziaw Россия  
Дата: 22.07.11 09:04
Оценка: +1
Здравствуйте, Visor2004, Вы писали:

V>
V> private ConstructorParameterValue ( _ : NToken ) : Expression [ Func [ IServiceSet, object ] ]
V>    {
V>      Nemerle.Linq.ToExpression(
V>      a =>
V>      {
V>        null
V>      });
V>    }
V>


V>вываливается с ошибкой

V>

V>typing fails on delayed macro


Мне кажется, компилятор тут не в состоянии тут вывести тип лямбды. Ибо имеет ограничение только на возвращаемый макрой результат. Должно помочь явное указание типов.

Вообще париться с expression tree в языке с квазицитатами мне кажется не лучшей идеей.
Re[4]: System.Linq.Expression
От: catbert  
Дата: 22.07.11 10:45
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Мне кажется, компилятор тут не в состоянии тут вывести тип лямбды. Ибо имеет ограничение только на возвращаемый макрой результат. Должно помочь явное указание типов.


Z>Вообще париться с expression tree в языке с квазицитатами мне кажется не лучшей идеей.


Квазицитаты работают только в макросах. Так что деревья выражений остаются нужными. (хотя абсолютно непонятно, почему квазицитаты работают только в макросах)
Re[5]: System.Linq.Expression
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.07.11 15:56
Оценка:
Здравствуйте, catbert, Вы писали:

C>Квазицитаты работают только в макросах. Так что деревья выражений остаются нужными. (хотя абсолютно непонятно, почему квазицитаты работают только в макросах)


Они работают где угодно. Но им нужен контекст компилятора.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: System.Linq.Expression
От: Ziaw Россия  
Дата: 22.07.11 19:07
Оценка: +1
Здравствуйте, catbert, Вы писали:

C>Квазицитаты работают только в макросах. Так что деревья выражений остаются нужными. (хотя абсолютно непонятно, почему квазицитаты работают только в макросах)


потому, что никто не сделал обертку для компилятора. я про нее писал уже, это не так сложно, но пока ни у меня ни у кого-то еще руки не дошли, хотя там делов строк на 50-100. простых, без изысков.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.