哈斯克尔monad:词源与意义?
当我对某些概念有所了解时,我发现不能理解概念名称的明显词源与我认为对概念的理解有何关系。 如果我看不到这种联系,我会留下这样的感觉,即有一些重要的洞察力是这个名字试图传达的,我还没有发现。
Monad:从希腊统一。 Mon = 1; ad =包含某个数字的组或单位。 这构成了“由一件事组成的一个小组或单位”。
http://www.haskell.org/haskellwiki/All_About_Monads说:
“monad是一种用计算值和计算顺序来组织计算的方法,monad允许程序员使用顺序构建块来构建计算,这些构建块本身可以是计算的序列。” ...“其他单子存在用于构建执行I / O,具有状态,可能返回多个结果等的计算”
没有什么关于单性的。
http://www.haskell.org/haskellwiki/Monad声称monad中的单一性是指monad将产生的一个输出。 但是鉴于任何函数都会产生一个输出,并且上面的引用表示“可能会返回多个结果”,更不用说带外/错误结果了),并且“组或单元”没有任何内容,这种解释似乎没有说服力。
有更好的解释吗?
[编辑:回应“off off topic”标志。 我的问题不是关于单词“monad”本身的词源。 这是关于哈斯克尔monad的概念,以及monad这个词的根源是如何告知我们这个概念的,或者实际上是误导我们理解这个话题。 鉴于monad在Haskell中是一个着名的难以沟通的概念,这当然是一个关于编程的问题。
这是一个突出的问题,受访者提出的关于“monad”的根源如何可能与手头主题相关的建议有所不同,其中包括观察到Haskell自己的文档中的解释受到高度怀疑。
这就是说,我对给出的答案非常满意(谢谢大家!),所以不需要重新打开主题。 但我主张不要将它移动到其他地方,以便其他人对Haskell重要概念有同样的困惑,可以在这里找到它。]
有更好的解释吗?
简答:不,实际上没有。
略少的简短回答:这几乎肯定与“monoid”有关,与任何其他“monad”(至少有两个)的使用没有关系,这个术语是在数学家聚会上创造的,因此甚至可能没有书面这是该术语的首次使用。
较长的答复引用和引用:我在这里写的。
顺便说一句,在wiki上声称所谓的含义对我来说似乎非常可疑。
链接地址: http://www.djcxy.com/p/43361.html上一篇: Haskell monad: etymology versus meaning?
下一篇: why can't a function take monadic value and return another monadic value?