
#10365: Implement Semigroup as a superclass of Monoid Proposal (Phase 1) -------------------------------------+------------------------------------- Reporter: gidyn | Owner: quchen Type: feature request | Status: patch Priority: high | Milestone: 8.0.1 Component: libraries/base | Version: 7.10.1 Resolution: | Keywords: report-impact Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D1284 Wiki Page: | -------------------------------------+------------------------------------- Comment (by ekmett): @nomeata: FWIW- the implementation in `semigroups` was crafted by mixing and matching parts between the 2-3 implementations of non-empty lists at the time. The skeleton of it was build mostly by raiding the `NonEmptyList` package for parts with permission of the owners. AFAIK, Tony has deprecated his `NonEmptyList` package in favor of the one in `semigroups` (hence the lack of updates in the last 5 years -- this changeover predated having any deprecation mechanism on hackage.) Robin Kay's `NonEmpty` package is just a data type with no instances and no methods, also 6 years old. Cardinality also hasn't seen a patch in 6 years. Remarkably it still builds, because it too simply provides no instances. `MinLen` requires a ton of type system extensions. Out of the things that are suitable to consider as a `base`-ready encoding of a non-empty list, only Henning's `Data.NonEmpty` is actively maintained, and it tackles a more general problem, and brings with it a dozen different ad hoc classes for inserts and the like. So if you're hunting for materials to use to rebuild the bikeshed completely, I'd say out of the packages on hackage today, that is the only real source of lumber. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10365#comment:37 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler