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