Scala is a functional programming language and, as such, it supports design patterns based on concepts such as monoids, monads, and others. We already saw these in Chapter 10, Functional Design Patterns - the Deep Theory, and we know the rules they follow and the structure they have. We wrote everything ourselves, but a library already exists that does this for us—Scalaz (https://github.com/scalaz/scalaz). This library is used when we need purely functional data structures.
Another library that has a similar popularity to Scalaz in the community is Cats (https://github.com/typelevel/cats). They should both be able to help developers achieve the same functional programming concepts. In most cases, the choice between the two is based on personal preference, local community culture or company policies.
We have already encountered Scalaz in the previous chapter...