Typeclass instances for functions
问题 I've just realized, that Functions have instances for Monad, Functor and Applicative. What I usually do, when I see some typeclass instance I don't get, is write some well-typed expression and see what it returns: Can somebody explain these instances? You usually hear about the instances for List and Maybe, which by now are natural to me, but I don't understand how Functions can be a Functor or even a Monad. EDIT: Okay, this is a valid well-typed expression that doesn't compile: fmap (+) (+)