Функция "mayBeMempty" для полугруппы
Следующая функция -
mayBeMempty :: (Eq a, Semigroup a) => a -> a -> Bool
mayBeMempty candidate ref = candidate <> ref == ref
Является (менее эффективным) обобщением Data.Set.isSubSetOf
, Он проверяет, содержится ли первый аргумент во втором, и всегда возвращает True
когда первый аргумент mempty
(когда он возвращается False
как известно, не быть mempty
).
Кто-нибудь знает, существует ли эта функция или концепция под каким-либо именем или даже с существующим классом типов (в этом случае это будет не менее эффективно, чем isSubSetOf
)?
2 ответа
PartialOrd
"s leq
это то, что я искал.
IIUC, разница в том, что он не предназначен для соответствия правилам, как я описал для Semigroup
, но вместо этого он предназначен для работы таким образом с Lattice
который определен в том же пакете, который в некоторых отношениях похож на полугруппу, но лучше подходит для таких вещей, как наборы, в которых объединение чего-либо с самим собой приводит к самому себе.
Я искал с помощью Google и думаю, что нет предварительно реализованной версии этого.
Я действительно не понимаю, как это можно сделать более эффективным, ТБХ.