Functional Prgramming Haskell You Could Have Invented Monads! (And Maybe You Already Have.) Carefull: may contains harmful script