java-functional Exploring ways to encode functional concepts in Java: Structural pattern matching Cons list Higher order generics and type type classes (functor and monoid) Fixed points of functors, recursions schemes (catamorphism) and algebras