So, what is a monad?
I get sick and tired of people making simple things complicated, so when someone told me he was going to take a look at what a monad is, I assumed it was time to intervene; this is the wikipedia explanation:
In functional programming, a monad is a structure that represents computations defined as sequences of steps. A type with a monad structure defines what it means to chain operations, or nest functions of that type together. This allows the programmer to build pipelines that process data in steps, in which each action is decorated with additional processing rules provided by the monad. As such, monads have been described as “programmable semicolons”; a semicolon is the operator used to chain together individual statements in many imperative programming languages, thus the expression implies that extra code will be executed between the statements in the pipeline. Monads have also been explained with a physical metaphor as assembly lines, where a conveyor belt transports data between functional units that transform it one step at a time. They can also be seen as a functional design pattern to build generic types.
That sounds like a sentence that requires you to have a large beard, no social skills and an IQ of over 150 to understand it!!
I go to wikipedia to understand things, not to feel like a dumb*ss!
Here is my take on what a monad is
So here was my response:
A monad is just a functional wrapper, f.e. "maybe(AnInst).print()" translates to "if (AnInst!=null) AnInst.print()" /cc @sinasamavati— Tom Janssens (@ToJans) October 6, 2013