1.
собственно операций может быть много
a+b
a ++--++ b и прочая
как разобрать выражение с ними
на сколько я понимаю
a+b не эквивалентно (_+_)(a,b)
2. будут ли эквивалентны ссылки на переменные def x1=1; def x2=x1+1;
Здравствуйте, Аноним, Вы писали:
Кстати а обязательно макрос ?
В Nemerle можно объявлять свои операции для любого типа:
class A
{
public static @++++----(l : A, r : A) : A { A() }
}
Здравствуйте, Аноним, Вы писали:
А>1.
А>собственно операций может быть много
А>a+b
А>a ++--++ b и прочая
А>как разобрать выражение с ними
А>на сколько я понимаю
А>a+b не эквивалентно (_+_)(a,b)
| <[ $op($a, $b) ]> =>
А>2. будут ли эквивалентны ссылки на переменные def x1=1; def x2=x1+1;
Они и ссылками то не будут. Это просто имена которые еще нужно связать. Вот после типизации — да. Но это уже будет не PExpr, а TExpr. Кроме того типизацию еще нужно правильно провести. В Немерле есть отложенный вывод типов. По сему просто вызов:
def typed = typer.TypeExpr(expr);
не гарантирует, что все типы будут выведены.
Подробности см. в
статьеАвтор(ы): Владислав Юрьевич Чистяков
Дата: 03.09.2009
В данной части статьи рассказывается о том, как работает система вывода типов Nemerle, о том, как с ней могут взаимодействовать макросы Nemerle, и что это дает
на этом форуме.