Здравствуйте, Воронков Василий, Вы писали:
ВВ>...и классическая Set Builder нотация могла бы "сорвать крышу" многим пользователям... Я, например, с трудом представляю, как все это впихнуть в хаскелевский list comprehension, чтобы не получилась каша.
Я не про set buider и не про list comprehension, я про стандартные ФВП вроде map—filter—fold/reduce (и их C#-аналоги Select—Where—Aggregate).
ВВ>Плюс Linq таки "круче" стандартных генераторов — есть и orderby, group by и let.
Всё, что можно выразить в терминах query comprehension syntax, можно выразить и в терминах ФВП (хоть и не всегда лаконично). Так, например, есть extension-методы OrderBy/ThenBy и GroupBy, let же воспроизводится введением промежуточного кортежа (в C# удобно использовать синтаксис анонимных классов). Кроме того, есть много других полезных ФВП, которые через query comprehension syntax не выражаются. Приходится «смешивать языки» — часть запроса писать на SQL-подобном языке, затем оборачивать в скобки и добавлять вызов C# extension-методов — получается немного эклектичненько.
ВВ>Linq — это скорее генератор, он все же ленивый.
Лень никуда не девается. Linq ничего нового в рамках CLR или ядра языка не предоставляет, всё в результате компилируется в обычные сатические функции, возвращающие санки.