【发布时间】:2018-12-25 18:46:35
【问题描述】:
以下函数-
mayBeMempty :: (Eq a, Semigroup a) => a -> a -> Bool
mayBeMempty candidate ref = candidate <> ref == ref
是Data.Set.isSubSetOf 的(效率较低的)泛化。它检查第一个参数是否“包含”在第二个参数中,并在第一个参数为 mempty 时始终返回 True(当它返回 False 时,已知它不是 mempty)。
有谁知道这个函数或概念是否已经以某个名称或什至现有的类型类存在(在这种情况下,它的效率不会低于isSubSetOf)?
【问题讨论】:
-
我想知道你真正想要的是带有某种减法的半群,还是取消属性......那是一个不同的类,也许你可以编写一个更有趣的实现,例如也许它可能是列表中的
isSubSequenxeOf作为序列。 -
@assembly.jc:我正在寻找一个函数,它在为
Set a实例化时与isSubSetOf执行相同的操作,并且通常总是执行与上面定义的mayBeMempty等效的操作但有效(不一定使用<>和==)
标签: haskell typeclass monoids semigroup