Informally, a monad is a container of elements, notated as F[_], packed with 2 functions: flatMap (to transform this container) and unit (to create this container).
Common library examples include List[T], Set[T] and Option[T].
Formal definition
Monad M is a parametric type M[T] with two operatio...