Обоснование переименования операций со списком высшего порядка - PullRequest
2 голосов
/ 26 сентября 2010

Что послужило основанием для переименования операций со списками более высокого порядка в C #?(Примеры: map -> Select, filter -> Where, fold -> Aggregate)

Ответы [ 4 ]

5 голосов
/ 26 сентября 2010

По поводу мета-вопроса ...

Сообщество функционального программирования и основное сообщество императивного программирования долгое время развивались практически в изоляции друг от друга. В результате есть фундаментальные различия словарного запаса; например, общий термин, такой как «полиморфизм», означает совершенно разные вещи для каждой группы (параметрический полиморфизм, a.k.a. «дженерики» или «шаблоны» для FP-элементов; в отличие от полиморфизма подтипа для остальных).

Запрос об обосновании имен (если они вообще есть) часто приводит к одному простому ответу - вы называете материал в соответствии с «местной культурой». В C # LINQ - это язык запросов, такой как SQL, поэтому он очень похож на SQL.

Но задавать этот вопрос примерно так же, как отправиться в Испанию и спросить, в чем смысл того, что каждый называет свой дом "mi casa". («Что вы имеете в виду, почему я называю это так? Это то, что называется! Вы имеете в виду, что вы называете это чем-то другим?»)

5 голосов
/ 26 сентября 2010

LINQ пытается быть примерно знакомым людям, знающим SQL, где проекция - это выбор и т. Д. Конечно, вы можете написать свои собственные методы расширения с именами, которые подойдут.

2 голосов
/ 26 сентября 2010

Не ответ, но достойный в стороне:

См. http://blogs.msdn.com/b/jaredpar/archive/2008/12/02/mapping-linq-to-f.aspx для перевода 'кольца декодера' между функциями LINQ (как в C # / Enumerable) и F # Seq (которые в основном следуют более традиционным функциональным именам).

1 голос
/ 26 сентября 2010

Ну, ИМО, «сложить» - это довольно ужасное название для «Агрегат». Сумасшедшие математики. :) В основном, хотя имена C # более соответствуют SQL / LINQ.

...