Monad
In category theory, a monad on a category C is a triple (T, η, μ) in which T is an endofunctor T: C → C and η: Id_C → T and μ: T ∘ T → T are natural transformations. They satisfy the associativity and unit laws: μ ∘ Tμ = μ ∘ μT and μ ∘ Tη = μ ∘ ηT = id_T.
In functional programming, a monad is a design pattern that represents computations wrapped in a context, such
Common examples include Maybe/Option for computations that may fail, List for nondeterministic computations, IO for input/output