Compare the definition of Free to that of Fix:
data Free f a = Return a
              | Free (f (Free f a))
newtype Fix f = Fix { unFix :: f (Fix f) }
In particular, compare the type of the Free constructor with the type of the Fix constructor. Free layers up a functor just like Fix, except that Free has an additional Return a case.