The library should model that a Group induces a Groupoid
- Dominant language
- Haskell
- Stars
- 10
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
Like a Semigroup induces a Semigroupoid, a Group induces a Groupoid.
The first relation is captured by the instance: `Semigroup m => Semigroupoid (Semi m)` [(link to Hackage docs)](http://hackage.haskell.org/packages/archive/semigroupoids/3.0.2/doc/html/Data-Semigroupoid.html#t:Semi), but there is no such relationship defined. It would be something like:
``` haskell
instance Group m => Groupoid (Semi m) where
inv (Semi n) = Semi (groupInv m)
```
I'm also missing a definition of Group among your packages.
I'm not asking this just so, but because I've run into an application where some concepts are naturally modeled using groupoids and groups (even though I'd need a slightly different definition).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the existing Semigroup-to-Semigroupoid instance in the semigroupoids package and the Groupoid and Semi definitions in this repository. Compare the proposed inv implementation with the requested Group relationship, then determine how the missing Group definition and the noted alternative definition affect the design. Done means the intended Group-to-Groupoid relationship is specified and covered consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100