groupoid: A Groupoid class

[ bsd3, data, deprecated, library ] [ Propose Tags ]

A groupoid is structure consisting of a set of elements (here a Haskell type) and a binary operator (in present case the function gappend).

It is comparable to the Monoid typeclass, but there is no obligation that the set supports a neutral element (mempty in Data.Monoid).

In geometry, bounding boxes (represented as two points - bottom-left corner and top-right corner) give an example where a groupoid may be more satisfying than a monoid. The union operation on bounding boxes is essential to track the extent of shapes after their superimposition. To fit bounding box union into the Monoid typeclass one can do a clever trick representing mempty with the bottom-left corner at positive infinity and the top-right corner at negative infinity, the standard implementation of union which uses min and max will still proceed to identify the extreme corners correctly. This is nice enough if the bounding box coordinates are represented by Doubles, but a problem if they are Ints (say representing grid coordinates) - one might decide it is better simply to consider concrete bounding boxes and not their empty/infinite cousins.




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1.0
Dependencies base (<5) [details]
License BSD-3-Clause
Copyright Stephen Tetley <>
Maintainer Stephen Tetley <>
Category Data
Home page
Uploaded by StephenTetley at 2009-09-27T13:22:07Z
Distributions NixOS:0.1.0
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1395 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]