6

当我对某个概念有所了解时,我发现无法看到概念名称的明显词源与我认为我对该概念的理解有何关联,这非常令人不满意。如果我看不到这种联系,我就会觉得这个名字试图传达一些我还没有发现的重要洞察力。

Monad:源自希腊语,意为统一。周一=一;ad = 包含一定数量的组或单元。这构成“由一个事物组成的组或单元”。

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

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

没有什么关于一体性的。

http://www.haskell.org/haskellwiki/Monad声称 monad 一词的唯一性是指monad 将产生的一个输出。但是鉴于任何函数都会产生一个输出(并且上面的参考资料说“可能返回多个结果”,更不用说带外/错误结果),并且没有关于“组或单元”的任何内容,这种解释似乎没有说服力.

有更好的解释吗?

[编辑:回应“离题”标志。我的问题不是关于“monad”这个词本身的词源。它是关于 monad 的 Haskell 概念,以及 monad 这个词的根源如何告诉我们这个概念,或者实际上可能误导我们理解这个主题。鉴于 monad 在 Haskell 中是一个众所周知的难以沟通的概念,这当然是一个关于编程的问题。

受访者关于“monad”的根源如何与手头的主题相关的不同建议强化了这是一个突出的问题,包括观察到 Haskell 自己的文档中的解释是高度可疑的。

也就是说,我对给出的答案非常满意(谢谢!),所以不需要重新打开这个话题。但我主张不要将它移到别处,以便其他对重要的 Haskell 概念有同样困惑的人可以在这里找到它。]

4

1 回答 1

10

有更好的解释吗?

简短的回答:不,真的没有。

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

引用和引文的更长答案:我在这里写的那个。

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

于 2012-12-30T11:17:05.977 回答