Arrive at monads by going from composition of pure functions to composition of effectful functions - I made some summary/overview slides of Rob Norris' (https://twitter.com/tpolecat) very interesting talk: 'Functional Programming with Effects' https://www.youtube.com/watch?v=po3wmq4S15
He starts from pure function composition and uses math to derive Kleisli composition and Monad.
Keywords: pure functions, effectful functions, effects, function composition, functional programming, kleisli composition, monad, scala.