module Gamgine.Coroutine where newtype Coroutine i o = Coroutine { runCoroutine :: i -> (o, Coroutine i o) } newtype CoroutineM m i o = CoroutineM { runCoroutineM :: i -> m (o, CoroutineM m i o) }