--data Port a    = Port (FRP.Behavior a) (IO a)

signal :: a -> IO (Signal a)
signal x = do
  (b, pb) <- liftIO $ FRP.sync $ FRP.newBehavior x
  return $ Signal b pb
signal :: a -> IO (Signal a)
signal x = do
  (b, pb) <- liftIO $ FRP.sync $ FRP.newBehavior x
  return $ Signal b pb
signal x = do
  (b, pb) <- liftIO $ FRP.sync $ FRP.newBehavior x
  return $ Signal b pb