github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/4-purely-functional/ch09-functor-monoid/11_monoid/src/monoid/name_monoid.go (about) 1 package monoid 2 3 type NameMonoid interface { 4 Append(s string) NameMonoid 5 Zero() string 6 } 7 8 func WrapName(s string) NameMonoid { 9 return nameContainer{name: s} 10 } 11 12 type nameContainer struct { 13 name string 14 } 15 16 func (s nameContainer) Append(name string) NameMonoid { 17 s.name = s.name + name 18 return s 19 } 20 21 func (nameContainer) Zero() string { 22 return "" 23 } 24 25 func (s nameContainer) String() string { 26 return s.name 27 }