watch :: (a -> Bool) -> Coroutine a (Event a)
watch f = Coroutine $ \i ->
    if f i
        then ([i], Just $ watch f)
        else ([], Just $ watch f)
watch :: (a -> Bool) -> Coroutine a (Event a)
watch f = Coroutine $ \i ->
    if f i
        then ([i], Just $ watch f)
        else ([], Just $ watch f)
watch f = Coroutine $ \i ->
    if f i
        then ([i], Just $ watch f)
        else ([], Just $ watch f)