On building intuitions on monads and functors: https://www.jerf.org/iri/post/2958 (Also, TIL that the function type is a functor in Haskell!)