execute :: Event (IO a) -> Interval (Event a)
execute e = do
    (e', push) <- newEvent
    on e (>>= push)
    return e'
execute :: Event (IO a) -> Interval (Event a)
execute e = do
    (e', push) <- newEvent
    on e (>>= push)
    return e'
execute e = do
    (e', push) <- newEvent
    on e (>>= push)
    return e'