Is there any advantage in haskell to write a local closure like below ?
-- | A fix-point type.
newtype Fix f = Fix { unFix :: f (Fix f) }
-- | Fold 'Fix'.
foldFix :: Functor f => (f a -> a) -> Fix f -> a
foldFix f = go where go = f . fmap go . unFix --- go closes over f
foldFix2 :: Functor f => (f a -> a) -> Fix f -> a
foldFix2 f = f . fmap (foldFix f) . unFix