2012-09-15 13 views
5

पर प्रिंट नहीं करता है मैं wxHaskell के साथ प्रयोग कर रहा हूं। मैं ghci के तहत ऐप चलाने में सक्षम नहीं था, इसलिए मुझे इसका परीक्षण करने के लिए एप्लिकेशन का उपयोग करना होगा। मैं println डीबगिंग के साथ प्रोग्राम का परीक्षण करना चाहता था। हालांकि, ऐसा लगता है कि putStrLn जीयूआई में काम नहीं करता: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

यह काम किया। धन्यवाद! –

संबंधित मुद्दे