Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, artelk, Вы писали:
A>>Нельзя ли как-нибудь засахарить субж?
H>Сколько пользуюсь Nemerle — вообще никогда не приходилось использовать вырожденную функцию. Зачем для нее сахар-то?
Пользуюсь C#, периодически приходится использовать во всяких GroupBy, ToDictionary и OrderBy. Не часто, правда, но все же.
Здравствуйте, Jack128, Вы писали:
J>Здравствуйте, artelk, Вы писали:
A>>Нельзя ли этот макрос добавить в стандартную библиотеку?
J>А просто функции id не логичнее написать???
J>
J>module Functions
J>{
J> id[T](x: T):T { x }
J>}
J>using Functions;
J>...
J>def g = lst.GroupBy(id);
J>
Да, как вариант. Только using всегда писать придется, чтобы модуль Functions открыть.
Здравствуйте, artelk, Вы писали:
H>>Сколько пользуюсь Nemerle — вообще никогда не приходилось использовать вырожденную функцию. Зачем для нее сахар-то? A>Пользуюсь C#, периодически приходится использовать во всяких GroupBy, ToDictionary и OrderBy. Не часто, правда, но все же.
Имхо, проще написать свои перегрузки для таких случаев.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, Jack128, Вы писали:
Z>>>Тогда уж лучше it =)
J>>Ну я из haskell наименование взял. А где it используется (кроме Kotlin ? )
Z>Не знаю, но id не выглядит интуитивно понятным
Как и it, имхо
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, artelk, Вы писали:
H>>>Сколько пользуюсь Nemerle — вообще никогда не приходилось использовать вырожденную функцию. Зачем для нее сахар-то? A>>Пользуюсь C#, периодически приходится использовать во всяких GroupBy, ToDictionary и OrderBy. Не часто, правда, но все же.
Z>Имхо, проще написать свои перегрузки для таких случаев.
Перегрузка на каждую функцию — не красиво
И для ToDictionary перегрузку не напишешь — не понятно будет, первым параметром эта вырожденная ф-я идет или вторым.
Мне, чисто из эстетических соображений, хотелось бы видеть "__" — по аналогии с "_=>_", которые встречаю в коде на шарпе.
Если бы мои вкусы совпали со мнением большинства и никто этот "__" еще не использовал — можно было бы засунуть его в стандартную поставку.
Здравствуйте, artelk, Вы писали:
A>Здравствуйте, Ziaw, Вы писали:
Z>>Здравствуйте, Jack128, Вы писали:
Z>>>>Тогда уж лучше it =)
J>>>Ну я из haskell наименование взял. А где it используется (кроме Kotlin ? )
Z>>Не знаю, но id не выглядит интуитивно понятным A>Как и it, имхо
скажи, а почему тебе id кажется не понятным?? Ты же сам назвал тему "Identity function"
Здравствуйте, artelk, Вы писали:
A>Очевидно, что "lst.GroupBy(_)" не подходит...
Ага. Это частичное применение GroupBy.
A>Если сделать макрос A>
A>public macro __()
A>syntax ("__")
A>{
A> <[ x => x ]>
A>}
A>
Это уж перебор. Макрос тут совершенно не нужен. Достаточно объявить такое вот свойство:
module Function[T]
{
public IdentityFunc : T -> T = x => x;
}
Это за одно и процессорные такты сэкономит, так как не придется создавать функциональный объект при каждом обращении (правда, не знаю как на производительность повлияет, то что это дженерик-решение, может и плохо).
Вопрос только в имени. Id не пойдет, так как это слишком часто используемое сокращение от Identifier.
А если имя функции будет длиннее чем x => x, то большая часть людей предпочтет лямбду.
A>PS А еще было бы здорово сделать вот эту оптимизацию.
Она вроде как сделана. По крайней мере класс Identity есть в стандартной библиотеке. Вот только использовать его как ФВП напрямую невозможно. В общем, этого изыска я так и не понял.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Она вроде как сделана. По крайней мере класс Identity есть в стандартной библиотеке. Вот только использовать его как ФВП напрямую невозможно. В общем, этого изыска я так и не понял.
Она не сделана. Класс объявлен, но оптимизация не производится.
Здравствуйте, Ziaw, Вы писали:
J>>Ну я из haskell наименование взял. А где it используется (кроме Kotlin :-) ? )
Z>Не знаю, но id не выглядит интуитивно понятным :shuffle:
Какие нафиг Котлины и Хаскелли. id — это математическое обозначение, такое же, как 0 в аддитивной группе, 1 в мульипликативной, etc.
Здравствуйте, Qbit86, Вы писали:
Q>Какие нафиг Котлины и Хаскелли. id — это математическое обозначение, такое же, как 0 в аддитивной группе, 1 в мульипликативной, etc.
Извини за грубость, но в задницу эту вашу математику и подобную систему наименования.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.