putStrLn не печатает на консоль
Я экспериментирую с wxHaskell. Я не смог запустить приложение под ghci, поэтому я должен использовать приложение для его тестирования. Я хотел протестировать программу с отладкой println. Тем не менее, похоже, что 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 ответ
Решение
Это вероятно выходная буферизация; вывод не записывается до выхода из программы.
Либо очистить явно:
putStrLn "Started"
hFlush stdout
Или включите буферизацию строки:
hSetBuffering stdout LineBuffering -- or even NoBuffering
putStrLn "Started"