Hello,

Just some minor suggestions and comments:

The description might read better as two sentences:

   A class for monoids with various general-purpose instances. Monoids
   are types with an associative binary operation that has an
   identity.

One thing that I think is a bit unclear from that description is the
fact that it does not matter *what* the binary operation does, as long
as the laws are followed. That is the whole point of the monoid class
-- you use it when you only care about the laws, not the specific
operation...

For the laws, it would be nice to label each rule, something like

 * mappend mempty x = x                                 -- Left Identity
 * mappend x empty = x                                  -- Right Identity
 * mappend x (mappend y z) = mappend (mappend x y) z    -- Associative
 * mconcat = foldr mappend mempty                       -- Not sure what to 
call this. Perhaps it an axiom?

See the Applicative class for a formatting example:

http://www.haskell.org/ghc/dist/current/docs/libraries/base/Control-Applicative.html

As an expert, seeing the name is faster than reverse engineering the
meaning of each law. I also suspect many people have never heard of
the concept of an identity element (I am pretty sure I hadn't when I
first started Haskell). So, I think it would be nice to tie together
the concepts mentioned in the description with the actual laws so that
the link is explicit.

j. 

At Sun, 18 Jan 2009 13:57:07 +0000,
Duncan Coutts wrote:
> 
> On Sat, 2009-01-17 at 13:36 -0800, David Leimbach wrote:
> > 
> > 
> > On Sat, Jan 17, 2009 at 9:16 AM, david48 <dav.vire+hask...@gmail.com>
> > wrote:
> >         On Sat, Jan 17, 2009 at 4:08 PM, David Leimbach
> >         <leim...@gmail.com> wrote:
> >         
> >         > So you're saying it should be better documented in Haskell
> >         what a Monoid is.
> >         >  Did you say you searched for "C++ class" why not "Haskell
> >         Monoid" then?
> >         >  The first correct google hit that didn't think I meant
> >         Monads, takes you
> >         > straight to the GHC documentation for Data.Monoid.
> >         
> >         Read my first post on the thread, that's exactly what I did
> >         ( and then
> >         complained that the doc for Data.Monoid was close to useless )
> > 
> > 
> > Sorry missed it!  This is an exceptionally long thread! :-)  I agree
> > Data.Monoid's docs don't give you much to work with. 
> 
> Do you think they look better now:
> 
> http://www.haskell.org/ghc/dist/current/docs/libraries/base/Data-Monoid.html
> 
> Any other improvements you'd make?
> 
> Duncan
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to