gpt4 book ai didi

haskell - Last 是一个自由幺半群吗?

转载 作者:行者123 更新时间:2023-12-02 01:59:43 26 4
gpt4 key购买 nike

自由幺半群通常被视为“列表幺半群”。然而,我对其他可能的结构感兴趣,这些结构可能会给我们 免费的幺半群 .
首先,让我们回顾一下 的定义。免费的幺半群 .我一直不太明白如何定义 免费幺半群作为一个遵守幺半群定律的结构,仅此而已。我们如何证明某事不遵守上述规定的规则?或者这只是一种直觉?
不管怎样,我们要讲的是仿函数。如果某个幺半群是 免费 ,我们通过 得到它免费仿函数 .很明显,列表在这里非常方便:

free :: Set -> Mon
free a = ([a], (++), [])
然而,一个人可能会想出其他几个。例如,这里有一个 Last Data.Monoid :
freeLast :: Set -> Mon
freeLast a = (Last a, (<>) :: Last a -> Last a -> Last a, Last Nothing)
那么,这个仿函数是否使 Last一个 免费幺半群 ?更一般地说,如果有 Monoid (T a)的守法实例, 是 T一个 免费幺半群 ?

最佳答案

这是理解自由幺半群的一种方法:如果有人给你一个值,你能推断出它是如何创建的?考虑一个自然数的加法幺半群。我给你一个 7,然后问你我是怎么得到的。我可以添加 4+3,或 3+4,或 2+5,等等。有很多可能性。此信息已丢失。另一方面,如果我给你一个列表[4, 3] ,你知道它是由单例创建的 [4][3] .除了可能有一个单位[]涉及。也许是 [4]<>[3]<>[][4]<>[]<>[]<>[3] .但绝对不是 [3]<>[4] .
列表更长,[1, 2, 3] ,您还有其他选择([1]<>[2]) <> [3] , 或 [1] <> ([2]<>[3]) ,加上空列表的所有可能插入。因此,您丢失的信息遵循单位定律和关联性,但仅此而已。一个自由的幺半群值会记住它是如何创建的、模单位定律和结合性。

关于haskell - Last 是一个自由幺半群吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63927820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com