Scalaz
Principled Functional Programming in Scala
...It implements classic abstractions such as Functor, Applicative, Monad, Monoid, Foldable, and Traverse, along with powerful transformers (ReaderT, StateT, WriterT, OptionT, and more) to structure effects. The library offers rich data structures—\/ (disjunction), Validation, NonEmptyList, IList, and Free—that help model errors, invariants, and interpretable programs. Its type class–oriented design lets you write generic algorithms over capabilities rather than concrete types, improving reuse and testability. Scalaz also contributes optics, equality/ordering abstractions, and lawful instances with property-based tests to ensure algebraic laws hold. While the Scala ecosystem now includes sibling projects, Scalaz remains a deep toolbox for principled FP in Scala and a reference point for category-theory-inspired design on the JVM.