Cats is a library of type and data classes for Haskell style FP programming in Scala. As the name suggests it's based on a branch of mathematics knows as category theory. Cat's can be seriously hard to understand however the 80/20 rule applies here - you only need to know a bit about Cats to get a lot from it