"mayBeMempty" 半群函数

"mayBeMempty" function for a Semigroup

下面的函数-

mayBeMempty :: (Eq a, Semigroup a) => a -> a -> Bool
mayBeMempty candidate ref = candidate <> ref == ref

Data.Set.isSubSetOf 的(效率较低的)泛化。它检查第二个参数中的第一个参数是否为 "contained" 并且当第一个参数为 mempty 时总是 returns True (当它 returns False 已知不是 mempty).

有谁知道这个函数或概念是否已经以某个名称存在,甚至是现有类型 -class(在这种情况下,它的效率不会低于 isSubSetOf)?

我用 Hoogle 搜索过,认为没有预实现的版本。

我真的不知道如何才能让它更有效率,TBH。

PartialOrdleq 正是我要找的。

IIUC,不同之处在于它的设计并不符合我为 Semigroup 描述的规则,而是设计为以这种方式与 Lattice 一起工作,后者在相同的定义中包,它在某些方面类似于半群,但更适合集合之类的东西,其中将某些东西与自身合并产生自身。