[Haskell-cafe] [Ann] group-theory
jack at jackkelly.name
jack at jackkelly.name
Sun Dec 6 00:04:55 UTC 2020
Hi Emily, Reed,
Congrats on the release. The mathematics involved is a little above my pay grade (there's only a bit of undergrad group theory in my brain somewhere, covered in cobwebs), but there is an implementation thing I'd like your thoughts on, while your heads are in this space:
Over in Reflex-land, they've been using an internal Group class for their `patch` library ( https://hackage.haskell.org/package/patch ), which has an instance (Ord k, Group q) => Group (MonoidalMap k q) that's unlawful:
fromList [(1,Sum 1)] <> invert (fromList [(1, Sum 1)]) == fromList [(1, Sum 0)]
(This is used in reflex's QueryT, I think so you can get incremental updates to the answer to a query.)
I think the actual abstraction they'd want is more like an inverse semigroup, where (x <> invert x <> x == x) and (invert x <> x <> invert x == x). But when I was chatting with taneb about this (we were talking about moving `patch` over to `groups` at one point), just putting `class InverseSemigroup` into a groups package means you have a tower of three classes that differ only in laws. And that feels a bit awkward.
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).
-- Jack
December 6, 2020 4:52 AM, "Emily Pillmore" <emilypi at cohomolo.gy> wrote:
> Hello all,
>
> I am pleased to announce the release of the group-theory package: a package aimed at implementing
> the theory of finite groups in a reasonably ergonomic, well-documented, and featureful way. It's
> hardly finished, but my co-maintainer, Reed Mullanix (@totbwf) and I thought this was a good mvp
> with which we could announce.
>
> Contributions are very welcome, and I hope everyone enjoys.
> Cheers,
> Emily Pillmore
More information about the Haskell-Cafe
mailing list