Функция «mayBeMempty» для полугруппы - PullRequest
0 голосов
/ 25 декабря 2018

Следующая функция -

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

Является (менее эффективным) обобщением Data.Set.isSubSetOf.Он проверяет, содержится ли первый аргумент во втором, и всегда возвращает True, когда первый аргумент равен mempty (когда он возвращает False, известно, что он не равен mempty).

Кто-нибудь знает, существует ли эта функция или понятие уже под каким-либо именем или даже существующим классом типов (в этом случае он не будет менее эффективным, чем isSubSetOf)?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

PartialOrd s leq - это то, что я искал.

IIUC, разница в том, что он не предназначен для соответствия правилам, которые я описал для Semigroup, но вместо этого он предназначен для работы таким образом с Lattice, который определен в том же пакете, который в некоторых отношениях похож на полугруппу, но лучше подходит для таких вещей, как наборы, в которых объединение чего-либо с самим собой приводит к самому себе.

0 голосов
/ 26 декабря 2018

Я искал с помощью Google и думаю, что нет предварительно реализованной версии этого.

Я действительно не понимаю, как это можно сделать более эффективным, TBH.

...