Есть ли какое-то использование монад в среде .net? - PullRequest
5 голосов
/ 20 декабря 2010

Я узнал несколько дней назад, как насчет монад на Haskell, есть ли какое-то использование концепции монад в среде .net? И есть ли способы использовать эту концепцию в моих разработках с c #.

Спасибо за помощь.

Ответы [ 5 ]

4 голосов
/ 20 декабря 2010

Ну, само LINQ основано на монаде, через SelectMany.См. сообщение в блоге Уэса Дайера на тему для более подробного объяснения.

Хотя они обычно не используются вне этого, и большинство пользователей LINQ не будут думать о себе как об использовании монад.*

2 голосов
/ 20 декабря 2010
  • Асинхронная монада в асинхронном F # рабочие процессы (асинхронность в C # не монадическая)
  • Понимание списка Монада, в .NET LinQ
1 голос
/ 20 декабря 2010

Haskell - это функциональный язык программирования. В этом нет ничего особенного, но его дизайн облегчает обучение и понимание, а также очень эффективен и действенен на практике. Особенностью Haskell является концепция обобщения. Это означает, что вместо непосредственной реализации идеи вы скорее пытаетесь найти более общую идею, которая подразумевает вашу идею как особый случай. Это имеет то преимущество, что если в будущем вы обнаружите другие особые случаи, вам не нужно будет их реализовывать или, по крайней мере, не полностью с нуля.

Но это не значит, что вы не можете делать все в c #. В .net есть много компонентов, которые внутренне используют ту же концепцию, которую вы получаете в Monads. даже большинство разработчиков использовали его, но они не знают названия «Монады».

Если вы хотите использовать тот же синтаксис в c #, то вы не можете это сделать.

Если вы прочитаете эту статью Монад, тогда вы легко узнаете, что вся концепция Монад содержится в c #.

0 голосов
/ 10 сентября 2015

В C # 6.0 есть монадический нулевой условный оператор ?. Это помогает упростить проверку нуля, когда вам нужно извлечь значение из свойства вложенного объекта, где все, что по пути может быть нулевым. Подробнее можно прочитать здесь в разделе Нулевые условные операторы.

0 голосов
/ 20 декабря 2010

В дополнение к ответу Джона, посмотрите это очень интересное и интересное видео от эксперта к эксперту о математическом дуале LINQ, реактивной структуре:

Канал 9 - от эксперта к эксперту

...