Haskell monad:词源与意义?

时间:2012-12-30 11:05:24

标签: haskell terminology monads

当我开始理解某个概念时,我发现如果不能看到概念名称的明显词源与我认为我对这个概念的理解是如何相关的,我感到非常不满意。如果我看不到这种联系,我就会觉得有一些重要的见解,这个名字试图传达我尚未发现的。

莫纳德:希腊人团结一致。星期一=一; ad =包含特定数字的组或单元。这构成了“由一件事组成的团体或单位”。

http://www.haskell.org/haskellwiki/All_About_Monads说:

“monad是一种使用这些值来计算值和计算序列的计算方法.Monads允许程序员使用顺序构建块来构建计算,这些构建块本身可以是计算序列。” ...“存在用于构建执行I / O,具有状态,可能返回多个结果等的计算的其他monad”

没有什么关于一件事。

http://www.haskell.org/haskellwiki/Monad声称单词monad中的one-ness指的是monad将生成的 one 输出。但是假设任何函数产生一个输出,(并且上面的引用说“可能返回多个结果”,更不用说带外/错误结果了),并且没有任何关于“组或单位“,这种解释似乎难以令人信服。

有更好的解释吗?

[编辑:回应“关闭主题”标志。我的问题不是关于“monad”这个词本身的词源。它是关于monad的Haskell概念,以及monad这个词的根源如何告诉我们这个概念,或者实际上误导我们理解这个主题。鉴于monad是Haskell中一个着名的难以沟通的概念,这肯定是一个关于编程的问题。

这是一个突出的问题,因为受访者关于“monad”的根源如何与手头的主题相关的变化得到了加强,包括观察到Haskell自己的文档中的解释非常可疑。

那就是说,我对给出的答案非常满意(谢谢大家!),所以不需要重新打开主题。但是我主张不要把它移到其他地方,这样其他人对于一个重要的Haskell概念有着同样的困惑就可以在这里找到它。]

1 个答案:

答案 0 :(得分:10)

  

有更好的解释吗?

简短回答:不,确实没有。

稍微不那么简短的答案:它几乎肯定与“monoid”有关,与任何其他使用“monad”(至少有两个)没有关系,而且这个词是在数学家聚会上创造的,所以很可能没有甚至是第一次使用该术语的书面来源。

引用和引用的答案更长:The one I wrote here.

顺便说一下,维基上关于所谓含义的说法对我来说似乎非常可疑。