stepE :: a -> Coroutine (Event a) a
stepE a = Coroutine $ \ev ->
    let a' = last (a:ev)
    in (a', Just $ stepE a')
stepE :: a -> Coroutine (Event a) a
stepE a = Coroutine $ \ev ->
    let a' = last (a:ev)
    in (a', Just $ stepE a')
stepE a = Coroutine $ \ev ->
    let a' = last (a:ev)
    in (a', Just $ stepE a')