edge :: IO (Edge a)
edge = do
  (e, pe) <- liftIO $ FRP.sync $ FRP.newEvent
  return $ Edge e pe
edge :: IO (Edge a)
edge = do
  (e, pe) <- liftIO $ FRP.sync $ FRP.newEvent
  return $ Edge e pe
edge = do
  (e, pe) <- liftIO $ FRP.sync $ FRP.newEvent
  return $ Edge e pe