https://dev.to/juaneto/knowing-monads-through-the-category-theory-1mea
While Mathematicians like to talk non-sensical abstract idea, Informaticians want to know how to apply the idea concretely:
Mathematical Parlance:
Monad = Monoid +Endofunctor
Monoid = Identity + Associative
Endo-functor = functor between 2 same categories
IT Parlance:
Monad is a ‘function’ to wrap the ‘side effects’ (exception errors, I/O,… ) so that function composition in ‘pipeline‘ chained operation sequence is still possible in pure FP (Functional Programming, which forbids side-effects).
Some common Monads: ‘Maybe’, ‘List’, ‘Reader’…
This allows monads to simplify a wide range of problems, like handling potential undefined values (with the Maybe
monad), or keeping values within a flexible, well-formed list (using the List
monad). With a monad, a programmer can turn a complicated sequence of functions into a succinct pipeline that abstracts away additional data management, control flow, or side-effects.[2][3]
Exploring Monads in Scala Collections