Since we have higher-kinds we can model some high-level abstractions, including those from the king of abstraction — Category Theory.
Functor
Monad[18]
Monad
Applicative[19]
Applicative
Traversable[20]
Traversable
Arrow[21]
Arrow
[18] See Monads for Functional Programming by Philip Wadler
[19] See Applicative Programming with Effects by Conor McBride and Ross Paterson
[20] See The Essence of the Iterator Pattern by Jeremy Gibbons and Bruno C. d. S. Oliveira
[21] See Programming with Arrows by John Hughes