add Monoid laws
authorRoss Paterson <ross@soi.city.ac.uk>
Fri, 16 Jan 2009 15:16:24 +0000 (15:16 +0000)
committerRoss Paterson <ross@soi.city.ac.uk>
Fri, 16 Jan 2009 15:16:24 +0000 (15:16 +0000)
Data/Monoid.hs

index a0e3b20..65e3bb7 100644 (file)
@@ -40,7 +40,17 @@ import Test.QuickCheck
 
 -- ---------------------------------------------------------------------------
 -- | The class of monoids (types with an associative binary operation that
--- has an identity).  The method names refer to the monoid of lists,
+-- has an identity).  Instances should satisfy the following laws:
+--
+--  * @mempty `mappend` x = x@
+--
+--  * @x `mappend` mempty = x@
+--
+--  * @x `mappend` (y `mappend` z) = (x `mappend` y) `mappend` z@
+--
+--  * @mconcat = 'foldr' mappend mempty@
+--
+-- The method names refer to the monoid of lists under concatenation,
 -- but there are many other instances.
 --
 -- Minimal complete definition: 'mempty' and 'mappend'.