[Haskell-cafe] [Ann] group-theory

jack at jackkelly.name jack at jackkelly.name
Wed Dec 9 10:43:37 UTC 2020


December 9, 2020 4:16 AM, "Mario" <blamario at rogers.com> wrote:

> On 2020-12-05 7:04 p.m., Jack Kelly via Haskell-Cafe wrote:
> 
>> Dunno what the answer is, but I wanted to flag it while your package is young and breaking changes
>> are easy. I've been meaning to have a crack at moving the reflex patch-verse over to
>> monoid-subclasses ( https://hackage.haskell.org/package/monoid-subclasses ), which I provides some
>> the necessary tools with different names (patch reinvents MonoidNull, and I'm hoping that a
>> subtraction-that-removes keys could be lawful for one of the Reductive/Cancellative classes).
> 
> I'm the author and maintainer of monoid-subclasses, and I'd accept a PR that adds InverseSemigroup
> without overly disturbing the existing classes. The whole purpose of the package, after all, is to
> support mathematical abstractions that are richer than semigroups but are not proper groups.

Thanks for the offer. There are two things I want to sort out first:

1. I may have erred when suggesting InverseSemigroup; "inverting" a `Group g => Map k g` via `fmap invert` might admit nonunique inverses, which gives you an even weaker structure called a Regular Semigroup.

2. I want to see if I can make the behaviour I want fit the existing classes provided by `monoid-subclasses` (specifically `Cancellative` and maybe `Reductive` instances for types provided by `monoidal-containers`). It might be something like `instance (MonoidNull g, Group g, Commutative g, Ord k) => Reductive (MonoidalMap k g)`, where the reduction operation subtracts values at matching keys, pruning nulls. I need to at least write out the property tests to see if it might be sound.

Best,

-- Jack


More information about the Haskell-Cafe mailing list