【发布时间】:2011-08-30 11:56:43
【问题描述】:
我浏览过各种论文/文章/博客,而 Monads 则不然。人们在诸如类别理论(这到底是什么?)等各种上下文中谈论它们。在经历了所有这些并尝试真正理解和编写单子代码之后,我了解到单子只是语法糖(可能是最赞美他们所有人)。无论是 Haskell 中的 do 表示法还是 F# 中的计算表达式,甚至是 LINQ 多选运算符(请记住 LINQ 语法也是 C#/VB 中的语法糖)。
我的问题是,如果有人认为 monad 比语法糖更重要(超过嵌套方法调用),那么请用“实用性”而不是“理论概念”来启发我。
谢谢大家。
更新:
在浏览完所有答案后,我得出的结论是,在特定语言中实现 monad 概念是通过句法糖驱动的,但 monad 概念本身与句法糖无关,是非常笼统或抽象的概念。感谢每个人的回答,以明确概念本身和它在语言中的实现方式之间的区别。
【问题讨论】:
-
您的观点不能完全被否定,但请注意,有些人也将任何 Haskell 代码视为机器代码的“语法糖”。
-
我喜欢把我的机器想象成一个神奇的\-reducor。然后将糖映射到底层机器操作是特别有意义的。
标签: haskell f# functional-programming