haskell - 我对幺半群的理解有效吗?

标签 haskell operators monoids binary-operators

所以,我现在正在学习 Haskell,我想确认或揭穿我对 monoid 的理解。

What I figured out from reading CIS194 course is that monoid is basically "API" for defining custom binary operation on custom set.



比起我去告诉自己更多信息,我偶然发现了大量非常令人困惑的教程试图澄清这件事,所以我不再那么确定了。

我有不错的数学背景,但我只是被所有的隐喻弄糊涂了,我是 寻找明确的是/否回答我对幺半群的理解。

最佳答案

From Wikipedia :

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/

相关文章:

haskell - 是否可以 "hide"语言扩展?

java - 大于和小于一个语句

java - 0xaa 和 0x55 在做什么?

haskell - 如何使用函数的幺半群实例?

haskell - 单态限制、ghci 和 let 表达式

haskell - Reader 和 MonadReader

haskell - 表达式 str a b = ((.).(.)) (0 -) (+) 1 2

objective-c - << objective-c 枚举中的运算符?

haskell - 比较中的 Monoid 实例在哪里定义?

scala - Monoid 的错误累积