7
我有这样一个功能:我的Haskell程序是懒得
type App a = ExceptT AppError (ResourceT IO)
onEvent :: SDL.EventPayload -> App()
onEvent event = do
liftIO $ putStrLn "EVE!"
case event of
SDL.MouseMotionEvent dat -> do
liftIO $ putStrLn "HELLO"
SDL.KeyboardEvent kbe -> liftIO $ putStrLn "WORLD"
_ -> return()
这就是我的应用程序正在使用回调。
这个函数看起来不会触发,因为putStrLn没有打印到控制台。
不过这个功能 - 与轻微的修改确实都打印到控制台:
onEvent :: SDL.EventPayload -> App()
onEvent event = do
liftIO $ putStrLn "EVE!"
case event of
SDL.MouseMotionEvent dat -> do
liftIO $ print dat
SDL.KeyboardEvent kbe -> liftIO $ print kbe
_ -> return()
为什么的SDL.EventPayload
引起周围putStrLn
的全面评估工作?
如何让我的函数回调更可靠?
你确定这ISN不仅仅是一个缓冲问题?改为使用'hPutStrLn stderr'。 –
@ ThomasM.DuBuisson是的,它只是一个缓冲问题!现在我觉得有点傻... –
Bah,没有感觉愚蠢。这是一个公平的问题。很高兴的事情正在工作。 –