回答
Haskell是一种函数式编程语言。没有什么特别的,但它的设计使其易于学习和理解,在实践中非常有效和高效。 Haskell的一个非常特殊的特征是泛化的概念。这意味着,不是直接实现一个想法,而是试图找到一个更一般的想法,这意味着你的想法是一个特例。这样做的好处是,如果将来发现其他特殊情况,则无需实施它们,或者至少从头开始不完全。
但这并不意味着你不能在c#中做所有事情,在.net中有很多组件,它在内部使用你在Monad中获得的相同概念。即使大多数开发人员使用它,但他们不知道名称“Monads”。
如果你想在c#中使用相同的语法,那么你不能这样做。
如果您看过Monarch的文章this,那么您将很容易地知道Monads的所有概念都在c#中。
那么,LINQ本身是基于monad,通过SelectMany
。有关更多说明,请参阅Wes Dyer's blog post on the topic。
虽然他们不常用,但大多数LINQ用户不会认为自己是使用monads。
除了乔恩的回答,请查看关于LINQ的数学双,活性框架这很有趣,以及娱乐专家到专家视频:
'IObservable'是'IEnumerable'的对偶,但都参与相同的LINQ语法。 – Gabe 2010-12-20 08:44:20
- 的异步单子在F#中的异步 工作流(在C#中的异步不 单子)
- 列表理解 单子,在.NET的LinQ中
在C#6.0中有一个monadic空条件运算符?.
当您需要从嵌套对象属性中检索值时,它可以帮助简化空检查,其中沿途的任何内容都可以为null。您可以在空条件运算符部分阅读更多here。
- 1. Elastic Beanstalk环境的名称是否可用作环境变量?
- 2. 在Haskell中循环Monads
- 3. 是否有QuickBooks Online Edition测试环境?
- 4. 在MVC环境中使用ORM是否有很好的理由?
- 5. 是否有与QBasic语法兼容的当代编程环境?
- 6. 在商业环境中使用MySQL是否合法?
- 7. 是否有可能在npm/package.json中使用环境变量?
- 8. 如何检查您是否在.NET中的中信任环境中运行?
- 9. .NET - Microsoft.Data.Entity中是否有DbSet Find方法?
- 10. .NET的开发环境
- 11. 是否有适用于嵌入式环境的Java 5 VM?
- 12. 在现有的Conda环境中安装Tensorflow是否安全?
- 13. 是否有可能在python中更改父进程的环境?
- 14. 函数表达式是否有其自己的作用域/词法环境
- 15. 是否有.NET
- 16. 是否有.NET
- 17. 是否有可能拥有只读/共享的Equinox环境?
- 18. 在.net环境中spring + nhibernate的问题
- 19. 是否有可能确定R是否在Unix或Windows环境中运行
- 20. 是否有.net方法检查用户密码是否简单
- 21. 是否有可能用Docker复制Kubernetes容器网络环境?
- 22. 是否有可能从生产环境中排除grails插件?
- 23. 在编程环境中是否有任何占位符号码?
- 24. NATURAL(JOIN)在生产环境中是否有害?
- 25. 是否有使用.NET
- 26. 设置.NET 4.0环境
- 27. “完美”.NET开发环境?
- 28. unix环境中的C++还是Windows环境中的C++?
- 29. .NET BCL中是否有采用`ref`参数的方法?
- 30. 缓存映射的这种用法在多线程环境中是否安全?
显然C#没有Haskell的语法,但是它对monad有特殊的语法。 '从A中的x中的y中选择f(x,y)'是C#中monad的语法糖。 – Gabe 2010-12-20 08:50:41