2012-09-15 15 views
5

wxHaskell ile deneme yapıyorum. Uygulamayı ghci altında çalıştıramadım, bu yüzden test etmek için uygulamayı kullanmalıyım. Programı println hata ayıklama ile test etmek istedim. Ancak, putStrLn GUI çalışmıyor gibi görünüyor: Dışarı helloGui başlatmak comment EğerputStrLn, konsola yazdırmıyor

{-# 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 

, her şey iyi basılır. Ancak, döndürürsem, hiçbir şey yazdırılmaz, ancak pencere görüntülenir. Burada neyin var?

+1

Çıktı arabelleğe? Pencereyi kapattığınız anda yazdırılıyor mu? – Thomas

+1

Evet, bunu yazdıran ve temizleyen bir işlevle çalıştım. Otomatik temizleme özelliğini açmak için herhangi bir yol var mı? –

cevap

13

Bu, muhtemelen çıktı arabelleklemesidir; Program çıkana kadar çıktı yazılmaz.

Ya açıkça floş:

putStrLn "Started" 
    hFlush stdout 

Veya çizgi arabelleğe açmak:

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

Çalıştı. Teşekkürler! –

İlgili konular