http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html