刚刚阅读了范畴论书籍,并决定将其应用于haskell。
作者将 Monoid 定义为:
Monoid 是一个集合 L,配备了二元运算 *:LxL->L 和 L 中的一个可区分的单元元素 u,这样等等......
将“List”结构作为一个幺半群,显然二元运算是concat
,单位是[]
。
但是这里的集合 M 是什么?我试过L = {set of all lists}
了,但我认为这让我陷入了“L 在 L 中吗?”的麻烦。问题,这似乎与集合的问题相同。
还是我想错了什么?
编辑:正如@applicative 所指出的,Haskell 的列表是称为Free monoids 的幺半群!