https://wiki.haskell.org/Simple_monad_examples
https://wiki.haskell.org/Monads_as_containers
http://www.csinaction.com/2015/03/31/custom-infix-operators-in-haskell/
https://stackoverflow.com/questions/28139259/why-do-we-need-monads
https://en.wikibooks.org/wiki/Haskell/The_Functor_class
https://en.wikibooks.org/wiki/Haskell/Classes_and_types