Typeclasses Functor Applicative Monad MonadError Alternative Bifunctor Foldable Traversable Semigroup Monoid