Я новичок в Haskell и, возясь с несколькими образцами, у меня возникла проблема, когда я не могу остановить программу.Я использую Windows 7 и использую runhaskell от GHT.Ctrl-c не работает, поэтому мне приходится прибегать к диспетчеру задач, что немного мучительно.
Вместо того, чтобы делать это, я могу создать отдельный поток управления, который будет ждать, пока я не наберу q изатем выйдите из моего приложения на Haskell.
Приложение, с которым у меня возникла проблема, имеет формат:
main = do
h <- connectTo server (PortNumber (fromInteger port))
hSetBuffering h NoBuffering
... do some stuff with the socket handle ...
listen h
listen :: Handle -> IO ()
listen h = forever $ do
t <- hGetLine h
let s = init t
putStrLn s
where
forever a = do a; forever a
В псевдокоде я хотел бы получить:
main = do
waitForQuit
... original program ...
waitForQuit :: IO()
option <- getChar
if option == 'q' then
... kill the app ...
else
waitForQuit