gpt4 book ai didi

haskell - putStrLn 不打印到控制台

转载 作者:行者123 更新时间:2023-12-02 16:37:30 26 4
gpt4 key购买 nike

我正在尝试 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

如果我注释掉 start helloGui,所有内容都会打印良好。但是,如果我返回它,则不会打印任何内容,但会显示窗口。这里出了什么问题?

最佳答案

这可能是输出缓冲;直到程序退出时才会写入输出。

显式刷新:

  putStrLn "Started"
hFlush stdout

或者打开行缓冲:

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

关于haskell - putStrLn 不打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com