Bartosz Milewski's Category Theory for Programmers says the following:
A parametrically polymorphic function between two functors (including the edge case of the Const functor) is always a natural transformation.
Why is this true?
Something along the lines of an informal proof would help me. It would also help to have an intuition about this. Milewski says that naturality can be thought of as "separation of concerns" and provides an eggy metaphor:
One [functor] moves the eggs, the other boils them.
How could ad-hoc polymorphism mix the concern of moving the eggs with the concern of boiling the eggs?
As you can see, I'm pretty fuzzy on this topic.