If you are coming from an OO background, one of the more challenging aspects of learning functional programming is the lack of obvious design patterns. There are plenty of idioms such as partial application, and error handling techniques, but no apparent patterns in the GoF sense. In this post, we’ll look at a very common “pattern” known as a monoid. Monoids are not really a design pattern; more a