Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, artelk, Вы писали:
A>>Если сделать макрос
_FR>…
A>>, то получится писать так: "lst.GroupBy(__)".
A>>Нельзя ли этот макрос добавить в стандартную библиотеку?
_FR>Название не очень.
Идея такая: _ означает частичное применение функции. Но для того, чтобы функция возникла, нужно c этим _ что-то сделать:
"_.Key" преобразуется к "x=>x.Key"
"1 + _" — к "x => 1 + x"
"lst.GroupBy(_)" — к "x => lst.GroupBy(x)"
Т.е. _ захватывает свое ближайшее окружение и превращает его в функцию.
Тогда __ было бы специальным случаем частичного применения, когда окружение не захватывается, а оно само образовывало бы функцию.
И "lst.GroupBy(__)" перобразовывался бы к "lst.GroupBy(x=>x)", вместо "x => lst.GroupBy(x)".
Здравствуйте, artelk, Вы писали:
A>PS А еще было бы здорово сделать [url=http://code.google.com/p/nemerle/issues/detail?id=542&q=label%3APriority-
Оптимизация будет, но сахара не будет, пользуйтесь x => x.
Здравствуйте, VladD2, Вы писали:
_FR>>Согласен. Может быть, использоваь символ "=>"? Это конечно _немного более_ понятно. Справится ли парсер с этим?
VD>Мне кажется, что это ситуация в которой просто ничего не надо делать. Хардкейс (вроде как) реализовал оптимизацию и теперь вместо любой сквозной лямбды будет подставляться ссылка на предопределенную функцию.
Это круто. Пропустил как-то
VD>Так что с производительностью все будет ОК. Выражение "x => x" коротко и кристально понятно. Ну, а кому не нравится заведет в личной библиотеке функцию с таким именем которое будет ему понятно.
+100
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, artelk, Вы писали:
A>>PS А еще было бы здорово сделать [url=http://code.google.com/p/nemerle/issues/detail?id=542&q=label%3APriority-
H>Оптимизация будет, но сахара не будет, пользуйтесь x => x.
Готово.
Судя по ILSpy эта оптимизация реализовалась в компиляторе и библиотеках около десятка раз.