
module Gamgine.Coroutine where
import Control.Monad

newtype Coroutine i o = Coroutine {
   runCoroutine :: i -> (o, Coroutine i o)
   }

newtype (Monad m) => CoroutineM m i o = CoroutineM {
   runCoroutineM :: i -> m (o, CoroutineM m i o)
   }


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)
   }

Remove Monad constraint from type definition
Remove Monad constraint from type definition
