2012-09-15 98 views
5

我正在試驗wxHaskell。我無法在ghci下運行應用程序,所以我必須使用應用程序來測試它。我想用println調試來測試程序。然而,似乎putStrLn不GUI工作:putStrLn不打印到控制檯

{-# LANGUAGE Haskell2010 #-} 

module Main where 

import Graphics.UI.WX 

drawUI dc view = do 
    circle dc (point 10 10) 5 [penKind := PenSolid, color := red] 
    putStrLn "painted" 

helloGui :: IO() 
helloGui = do 
    f <- frame [ 
    text := "Example", 
    resizeable := False, 
    bgcolor := white, 
    layout := space 400 300, 
    on paint := drawUI] 
    return() 

main :: IO() 
main = do 
    putStrLn "Started" 
    start helloGui 

如果我註釋掉開始helloGui,一切都很好打印。但是,如果我將其返回,則不會打印任何內容,但會顯示窗口。這裏有什麼問題?

+1

輸出緩衝?關閉窗口後立即打印? – Thomas

+1

是的,我用一個打印和沖洗的功能來解決這個問題。但是有什麼辦法可以打開自動刷新嗎? –

回答

13

這可能是輸出緩衝;在程序退出之前不輸出輸出。

明示沖洗:

putStrLn "Started" 
    hFlush stdout 

或打開行緩衝:

hSetBuffering stdout LineBuffering -- or even NoBuffering 
    putStrLn "Started" 
+0

它工作。謝謝! –