- | Unfold a @'NonPure'@ from a seed @s@.
unfoldNonPure :: (Functor f) => (s -> f (Either a s)) -> s -> NonPure f a
unfoldNonPure h s = NonPure $ fmap (Free.unfold $ fmap h) $ h s

unfoldNonPure :: (Functor f) => (s -> f (Either a s)) -> s -> NonPure f a
unfoldNonPure h s = NonPure $ fmap (Free.unfold $ fmap h) $ h s
unfoldNonPure h s = NonPure $ fmap (Free.unfold $ fmap h) $ h s