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