signal :: Signal -> IO ()
signal var =
  do _ <- tryPutMVar var ()
     return ()
signal :: Signal -> IO ()
signal var =
  do _ <- tryPutMVar var ()
     return ()
signal var =
  do _ <- tryPutMVar var ()
     return ()