List 具有同一性的游离岩浆(单一岩浆)是否形成列表结构?

List 具有同一性的游离岩浆(单一岩浆)是否形成列表结构?,list,haskell,math,algebraic-data-types,monoids,List,Haskell,Math,Algebraic Data Types,Monoids,自由幺半群形成列表有点有名 在我看来,具有同一性的游离岩浆(单一岩浆)也形成列表结构 我说得对吗 任何额外的指示都是非常感谢的。一个自由的岩浆是由树组成的,一个身份元素可以作为事后考虑添加 data FreeMagma a = Leaf a -- generators | Node (FreeMagma a) (FreeMagma a) -- free magma with identity data FreeMagmaId a = Id | FreeMagma (FreeMagma

自由幺半群形成列表有点有名

在我看来,具有同一性的游离岩浆(单一岩浆)也形成列表结构

我说得对吗


任何额外的指示都是非常感谢的。

一个自由的岩浆是由树组成的,一个身份元素可以作为事后考虑添加

data FreeMagma a
  = Leaf a  -- generators
  | Node (FreeMagma a) (FreeMagma a)

-- free magma with identity
data FreeMagmaId a = Id | FreeMagma (FreeMagma a)

empty :: FreeMagmaId a
empty = Id

(<+>) :: FreeMagmaId a -> FreeMagmaId a -> FreeMagmaId a
Id <+> b = b
a <+> Id = a
FreeMagma a <+> FreeMagma b = FreeMagma (Node a b)
数据自由岩浆a
=叶a--发电机
|节点(游离岩浆a)(游离岩浆a)
--具有同一性的游离岩浆
数据FreeMagmaId a=Id | FreeMagma(FreeMagma a)
空::FreeMagmaId a
空=Id
()::FreeMagmaId a->FreeMagmaId a->FreeMagmaId a
Id b=b
a Id=a
自由岩浆a自由岩浆b=自由岩浆(节点a b)

通过“幺半群表单列表”,您的意思是列表是幺半群的一个示例吗?记住,并不是所有的幺半群都是列表。对不起,我忘了提到它是FreeMagma和FreeMonoid。并不是所有的幺半群都像你说的那样。谢谢。在Haskell中,无限结构是常见且有用的,我认为自由幺半群不是列表。另请参见,包含列表无法表示的奇异对象的幺半群,以及(我不记得是哪个先出现的)。定义中的幺半群不包含奇异对象。列表在Hakell中可能不是FreeMonoid,但FreeMonoid是List。继续读下去,等等。也许还值得简要解释一下这与关联性的关系。