我正在收集Semigroup
实例中的连接半格示例。如您所知,连接半格类似于半群,但需要额外的交换性和幂等性。从对黑客库的快速扫描中,我发现了以下示例:
Data.Semigroup.Max
Data.Semigroup.All
Data.Semigroup.Any
Data.Map.Append.AppendMap
我很好奇您是否在 Haskell 库中遇到过任何其他(有趣且有用的(连接半格示例?
有序严格增加的完全比较元素列表(其中相等意味着相同(似乎在包data-ordlist
Data.List.Ordered.union
下形成连接半晶格。
>Data.IntSet.IntSet
将集合的联合操作作为其<>
,这似乎符合您的标准。对于其他集合来说可能也是如此,只要你对它们的元素破坏它的病理Eq
实例感到满意。
对于Proxy
也是如此,但这远非你能得到的有用。