在.net环境下是否有一些monads的用法?

时间:2010-12-20 08:03:25

标签: c# .net monads

我几天前就已经了解了Haskell monads,在.net环境中是否有一些monads概念的使用? 有没有办法在c#的开发中使用这个概念。

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

嗯,LINQ本身是基于monad,来自SelectMany。有关详细说明,请参阅Wes Dyer's blog post on the topic

但它们并不常用于外部,大多数LINQ用户都不会将自己视为使用monad。

答案 1 :(得分:2)

  • F#中的Async Monad是异步的 工作流程(C#中的异步不是 一元)
  • 列表理解 Monad,在.NET的LinQ中

答案 2 :(得分:1)

Haskell是一种函数式编程语言。这没有什么特别之处,但它的设计使其易于学习和理解,并且在实践中非常有效和高效。 Haskell的一个非常特殊的特性是泛化的概念。这意味着,不是直接实现一个想法,而是试图找到一个更一般的想法,这意味着你的想法是一个特例。这样做的好处是,如果您将来发现其他特殊情况,您不需要实现它们,或者至少不是从头开始实现它们。

但这并不意味着你不能在c#中做所有的事情。在.net中有很多组件在内部使用你在Monads中获得的相同概念。甚至大多数开发人员都使用它,但他们不知道“Monads”这个名字。

如果你想在c#中使用相同的语法,你就不能这样做。

如果您阅读Monad的this文章,那么您将很容易地知道Monad的所有概念都在c#中。

答案 3 :(得分:0)

除了Jon的回答,请查看这个非常有趣的以及有趣的Expert to Expert视频,了解LINQ的数学对偶,反应框架:

Channel 9 - Expert to Expert