module DeferredFolds.Defs.UnfoldrM
where

import DeferredFolds.Prelude
import DeferredFolds.Types


unfoldr :: Monad m => Unfoldr a -> UnfoldrM m a
unfoldr (Unfoldr unfoldr) = UnfoldrM $ \ stepM -> let
  step input act state = stepM input state >>= act
  in unfoldr step return