2010-11-17 1 views
1

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

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

+1

Я рекомендую читать этот блог - хороший материал: http://igoro.com/archive/one-linq-operator-to-rule-them-all/ – Moberg

+0

@Moberg, очень красиво и комплименты Джона ответьте красиво. – Benjol

ответ

5

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

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

+0

Что он сказал, это простота в отношении гибкости. –

+0

Я подозревал, что это был ответ. Кажется, я помню, как кто-то из команды Rx сказал, что все операторы могут быть реализованы с использованием 'Zip' (IIRC). – Benjol