laws higher-kinded types type classes functor cats monad applicative functor
Tout plus