Если Bind является фундаментальным для монад, почему мы не используем больше SelectMany в Linq? - PullRequest
1 голос
/ 17 ноября 2010

Если Bind является фундаментальным для монад, почему мы не используем больше SelectMany в Linq?

(Извините, не могу придумать ничего полезного, чтобы добавить к вопросу)

Ответы [ 2 ]

5 голосов
/ 17 ноября 2010

Ну, SelectMany имеет решающее значение в том смысле, что многие другие вещи могут быть выражены таким образом , но это не значит, что это всегда самый краткий способ выразить это.Вы можете думать о Select, Where и т. Д. Как о простых удобных методах ... но тех, которые настолько удобны, что нам часто не нужна самая гибкая форма.

Чтобы привести другой пример, Aggregate может выполнить все необходимые операции агрегации, но Max, Count и т. Д. Встречаются гораздо чаще.

2 голосов
/ 17 ноября 2010

Обратите внимание, что каждый раз, когда у вас есть два from с в запросе Linq, вы звоните SelectMany.

http://bartdesmet.net/blogs/bart/archive/2008/08/30/c-3-0-query-expression-translation-cheat-sheet.aspx

...