所以,我现在正在学习 Haskell,我想确认或揭穿我对 monoid 的理解。
What I figured out from reading CIS194 course is that monoid is basically "API" for defining custom binary operation on custom set.
比起我去告诉自己更多信息,我偶然发现了大量非常令人困惑的教程试图澄清这件事,所以我不再那么确定了。
我有不错的数学背景,但我只是被所有的隐喻弄糊涂了,我是 寻找明确的是/否回答我对幺半群的理解。
最佳答案
In abstract algebra, a branch of mathematics, a monoid is an algebraic structure with a single associative binary operation and an identity element.
我认为你的理解是正确的。从编程的角度来看,Monoid 是一个具有两个必须实现的“方法”的接口(interface)。
您的描述中似乎缺少的唯一部分是“身份”,没有它,您描述的是Semigroup。 .
任何具有“零”或“空”以及组合两个值的方式都可以是 Monoid。需要注意的一点是,一个集合/类型有可能以不止一种方式成为 Monoid,例如通过
addition
的数字。有身份0
, 或 multiplication
有身份1
.
关于haskell - 我对幺半群的理解有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359342/