【发布时间】:2011-08-01 04:19:43
【问题描述】:
我是 Haskell 的新手,在处理一些示例时遇到了一个问题,我无法停止程序。我正在使用 Windows 7 并使用来自 ght 的 runhaskell。 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
【问题讨论】:
标签: haskell concurrency asynchronous io