Thank you Greg for a fantastic introduction to Monads and thanks Charles for making it happen. Great stuff!
I think I finally get a deeper understanding of what a monad is and would like to share an interesting revelation that I had connected with it. I realise what I say may sound somewhat strange but to me:
Monad = LIFE!
Hehe, let me elaborate...well generally speaking monad = change, I like to compare it to a transformation in life, we all go through different stages (wraps) in life and we need means (bind aka roll), in order to get from one stage to another.
It goes quite well with the KISS philosophy as well, the more complicated, scattered our life is, the more unmaintainable it is. What one would like to achieve, is to make his life simpler by taking out the unnecesary fuzz (scattered wraps) out of his life, thus ultimately creating a happier (monadic) version of life for himself, by using a kind of monadic transformation.
In that senese, to me the most difficult part of a monad would be the bind operator then, since this is were the transformation happens. In programming, just as in life, there is not one, universal bind operator, which forces us to come up with customized solutions for both our programs and lives.
Keep the lectures coming, I wonder where the next one will take me;)