In functional programming, a monad is a structure that combines program fragments (functions) and wraps their return values in a type with additional computation. In addition to defining a wrapping monadic type, monads define two operators: one to wrap a value in the monad type, and another to compose together functions that output values of the monad type (these are known as monadic functions). G
![Monad (functional programming) - Wikipedia](https://cdn-ak-scissors.b.st-hatena.com/image/square/a8143af117c047aa869288257d397ed3f5284907/height=288;version=1;width=512/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F3%2F32%2FSixth_root_as_a_composite_function_of_cbrt_and_sqrt.svg%2F1200px-Sixth_root_as_a_composite_function_of_cbrt_and_sqrt.svg.png)