2011-05-04 14 views
4

我寫了這個簡單的原型客戶端發送命令到我正在開發的服務器。它可以在GHCi中完美運行,但編譯後的版本會緩存輸入的所有內容,直到我輸入「quit」並退出程序。那時所有的輸入文本都會被髮送。TCP在GHCi中工作,緩存直到程序退出程序編譯與Leksah

我在做什麼錯?爲什麼編譯時會有所不同?

更新:如果使用ghc Main.hs進行編譯,它可以正常工作。當通過軟件包 - >編譯與Leksah編譯時發生問題。任何人都知道如何獲得Leksah正在使用的命令行?

系統信息: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 
+0

適合我。 ghc-7.0.3,網絡-2.3.0.2,OS X 10.6。你可以包含你的系統/ haskell平臺版本嗎? – 2011-05-04 23:27:26

+0

歡呼@John - 我已更新問題 – 2011-05-05 03:50:08

+0

對Leksah的+1。我們需要更多關注這個獨特的Haskell IDE。 – 2011-05-05 04:25:14

回答

1

嗯,看來Leksah實際上並沒有在我認爲是的時候構建應用程序。我一定是在沒有撥打hSetBuffering的情況下運行舊代碼。一個乾淨的&重建已經整理出來。道歉並感謝大家的時間和幫助。

編輯:發現它 - 如果其他人因此而感到困惑,單擊package-> build時,如果legsah處於debug/ghci模式,則不會生成已編譯的應用程序。

1

Leksah使用 「陰謀建」,老版本的 「runhaskell設置構建」。

+0

謝謝@Jutaro! – 2011-05-05 08:38:26