foldF :: Functor f => (f a -> a) -> Free f a -> a
foldF phi (Free x) = phi $ fmap (foldF phi) x
foldF :: Functor f => (f a -> a) -> Free f a -> a
foldF phi (Free x) = phi $ fmap (foldF phi) x
foldF phi (Free x) = phi $ fmap (foldF phi) x