Skip to content
Branch: master
Clone or download
RyanGlScott Regenerate .travis.yml
This commit was performed automatically by a script.
Latest commit ae2eea8 Aug 29, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/Data/Semigroup Add a DerivingVia-compliant adapter newtype to Data.Semigroup.Generic ( Jul 31, 2019
.gitignore Upgrade multi-ghc-travis setup Jan 15, 2018
.travis.yml Regenerate .travis.yml Aug 29, 2019
.vim.custom Factored nats into a separate package Jan 6, 2013
CHANGELOG.markdown Version 0.19.1 Aug 27, 2019
LICENSE copyright bump Mar 6, 2015
README.markdown Update README to reflect current status of package (#84) Nov 14, 2017
Setup.lhs repository initialized Jan 7, 2011
cabal.haskell-ci Allow hashable-1.2.5 and thus GHC-7.0 (#95) May 10, 2019
semigroups.cabal Version 0.19.1 Aug 27, 2019



Hackage Build Status

Haskellers are usually familiar with monoids. A monoid has an appending operation <> or mappend and an identity element mempty. A Semigroup has an append <>, but does not require an mempty element. A Monoid can be made a Semigroup with just instance Semigroup MyMonoid

More formally, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.

Data.Semigroup and Data.List.NonEmpty were added to base as of This package now offers a backwards-compatible API and some tools for deriving semigroups with generics.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on

-Edward Kmett

You can’t perform that action at this time.