我正在尝试学习 的概念monad
,我正在观看这个出色的视频Brian Beckend 试图解释什么是 monad。
当他谈到 时monoid
,它是一个类型的集合,它有一个组合规则,这个组合必须遵守 2 个规则:
- 联想:
x @ (y @ z ) = (x @ y) @ z
- 集合中的特殊成员:
x @ id = x and id @ x = x
我正在使用@
代表作文的符号。id
指特殊成员。
第二点是我想要理解的。为什么这很重要?如果没有这样的特殊成员怎么办?
当我学习新概念时,我总是试图将这些抽象的概念与其他一些具体的事物联系起来,这样我才能充分理解和背诵它们。
所以我想要联系monad
和关注monoid
的是lego
。因此,乐高套装中的所有积木构成了一个集合。组合规则是将它们组合成新形状的积木。很明显,组合遵循第一条规则:联想。但是没有特殊的积木可以与其他积木组合并得到相同的回报。所以它不遵守第二条规则。
但是乐高仍然是高度可组合的。当乐高不遵守第二条规则时,遗漏了什么?后果是什么?
或者这样说,与其他monoid
遵守所有这些规则的人相比。其他有什么功能monoid
而乐高没有?