
* Gabriel Gonzalez
I am definitely in favor of adding "semigroups" to the platform if drops the containers dependency. Optionally, we could then fix the Monoid instance for Maybe so that it has a proper semigroup context and we wouldn't have to use the Option type. I would be happy with that solution. However, if we do that then rename the types to "Max" and "Min" instead of "Maximum and "Minimum", since "Maybe (Max a)" is long enough as it is.
1. Actually, Max and Min are already there. No need to rename or do anything. 2. The problem isn't that semigroups is not in the platform. The problems are: 1. base already defines a (bad) Monoid instance for Maybe. We'll need to ditch it (and possibly break some code by doing that). 2. Both Monoid and Maybe are defined in base, while Semigroup isn't. So, such an instance will be orphaned. So, the best solution seems to be to merge semigroups into base. My proposal would be to move only Data.Semigroup to base, as it will lead to significant simplification, but leave other modules (NonEmpty, Natural) in a separate package, since they are of limited applicability and would gain nothing by being inside base. Roman