putStrLn不打印到控制台(putStrLn doesn't print to cons

2019-09-22 11:32发布

我与wxHaskell试验。 我没能在ghci中运行应用程序,所以我必须使用应用程序来测试它。 我想测试与调试的println程序。 然而,似乎putStrLn不GUI工作:

{-# 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,一切都很好打印。 但是,如果我回来了,没有打印,但显示的窗口。 什么是错在这里?

Answer 1:

这可能是输出缓冲; 输出不写,直到程序退出。

无论是冲洗明确:

  putStrLn "Started"
  hFlush stdout

或行缓冲转:

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


文章来源: putStrLn doesn't print to console