Ticket #2408: test.hs

File test.hs, 557 bytes (added by kirby, 6 years ago)
Line 
1module Main where
2
3import Control.Concurrent ( threadWaitRead, newEmptyMVar, takeMVar, putMVar, forkIO )
4import System.IO
5import System.Posix.Types
6
7withThread :: IO a -> IO a
8withThread j = do m <- newEmptyMVar
9                  forkIO (j >>= putMVar m)
10                  takeMVar m
11
12askUser :: String -> IO String
13askUser prompt = withThread $ do putStr prompt
14                                 hFlush stdout
15                                 threadWaitRead 0
16                                 getLine
17
18main = askUser "prompt: " >>= putStrLn