Identity function
От: artelk  
Дата: 26.07.11 11:24
Оценка:
Нельзя ли как-нибудь засахарить субж?
Пример кода на C#:

var lst = new []{1,2,3,4,2,3,4,3,4,4};
var g = lst.GroupBy(_ => _);//передается identity function
var d = g.ToDictionary(_=>_.Key, _=>_.Count());


А вообще, это довольно часто используемая функция и было бы приятно иметь сахар для нее.

Перепишем на Nemerle:
def lst = [1,2,3,4,2,3,4,3,4,4];
def g = lst.GroupBy(x => x);//упс, сахара нет и '_' нельзя использовать
def d = g.ToDictionary(_.Key, _.Count());


Очевидно, что "lst.GroupBy(_)" не подходит...
Если сделать макрос
public macro __()
syntax ("__")
{
  <[ x => x ]>
}

, то получится писать так: "lst.GroupBy(__)".
Нельзя ли этот макрос добавить в стандартную библиотеку?

PS А еще было бы здорово сделать вот эту оптимизацию.
PPS Еще вот тут нашел велосипедик (см Id[T]).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.