圏論の本を読んだだけで、それを haskell に適用することにしました。
著者はモノイドを次のように定義しています。
モノイドとは、2 項演算 *:LxL->L と、L 内の識別単位要素 u などを備えた集合 L です。
「リスト」構造をモノイドと見なすと、二項演算がconcat
で単位がであることは明らかです[]
。
しかし、ここでの集合 M は何ですか? やってみL = {set of all lists}
たけど「LはLなの?」と困ってしまうと思います。セットと同じ問題のようです。
それとも、何か間違ったことを考えていますか?
編集: @applicative が指摘したように、Haskell のリストはFree monoids と呼ばれるモノイドです!