github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/4-purely-functional/ch09-functor-monoid/11_monoid/src/monoid/README.md (about)

     1  # Monoids
     2  
     3  A Monoid is a functional "container" that has the following operations on it:
     4  
     5  - `Zero() T` - returns the zero (in FP, called the "identity") value of the type.
     6      This is similar in principle to Go's zero values, except you, the creator 
     7      of the monoid, get to define what the zero value is
     8  - `Append(other T) Monoid<T>` - appends `other` to the callee (the Monoid 
     9      that you are calling `Append` on ). You get to decide what "append" means.
    10      For `int`s,  for example, `Append` might be addition, but for `YourType`
    11      it could mean something completely different