Я написал этот простой клиент-прототип для отправки команд на сервер, который я разрабатываю. Он отлично работает в GHCi, но скомпилированная версия буферизирует все набранное, пока я не наберу "quit" и программа не закроется. В этот момент весь введенный текст отправляется.
Что я делаю не так? И почему это отличается при компиляции?
Обновление: работает правильно, если скомпилировано с ghc Main.hs
. Проблема возникает при компиляции с Leksah через Package -> Build. Кто-нибудь знает, как получить командную строку, которую использует Лекса?
Информация о системе: OSX 10.6, GHC 7.0.3, сеть 2.3.0.2
module Main (
main
) where
import System.IO
import Network
main = do
hServer <- connectTo "localhost" (PortNumber 7000)
hSetBuffering hServer NoBuffering
loop hServer
hClose hServer
where loop :: Handle -> IO ()
loop hServer = do
s <- getLine
hPutStrLn hServer s
case s of "quit" -> return ()
otherwise -> loop hServer