我几天前就已经了解了Haskell monads,在.net环境中是否有一些monads概念的使用? 有没有办法在c#的开发中使用这个概念。
感谢您的帮助。
答案 0 :(得分:4)
嗯,LINQ本身是基于monad,来自SelectMany
。有关详细说明,请参阅Wes Dyer's blog post on the topic。
但它们并不常用于外部,大多数LINQ用户都不会将自己视为使用monad。
答案 1 :(得分:2)
答案 2 :(得分:1)
Haskell是一种函数式编程语言。这没有什么特别之处,但它的设计使其易于学习和理解,并且在实践中非常有效和高效。 Haskell的一个非常特殊的特性是泛化的概念。这意味着,不是直接实现一个想法,而是试图找到一个更一般的想法,这意味着你的想法是一个特例。这样做的好处是,如果您将来发现其他特殊情况,您不需要实现它们,或者至少不是从头开始实现它们。
但这并不意味着你不能在c#中做所有的事情。在.net中有很多组件在内部使用你在Monads中获得的相同概念。甚至大多数开发人员都使用它,但他们不知道“Monads”这个名字。
如果你想在c#中使用相同的语法,你就不能这样做。
如果您阅读Monad的this文章,那么您将很容易地知道Monad的所有概念都在c#中。
答案 3 :(得分:0)
除了Jon的回答,请查看这个非常有趣的以及有趣的Expert to Expert视频,了解LINQ的数学对偶,反应框架: