"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。
PartialOrd
的 leq
正是我要找的。
IIUC,不同之处在于它的设计并不符合我为 Semigroup
描述的规则,而是设计为以这种方式与 Lattice
一起工作,后者在相同的定义中包,它在某些方面类似于半群,但更适合集合之类的东西,其中将某些东西与自身合并产生自身。
下面的函数-
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。
PartialOrd
的 leq
正是我要找的。
IIUC,不同之处在于它的设计并不符合我为 Semigroup
描述的规则,而是设计为以这种方式与 Lattice
一起工作,后者在相同的定义中包,它在某些方面类似于半群,但更适合集合之类的东西,其中将某些东西与自身合并产生自身。