正如标题所说,由于某种原因,传递给trace
(嗯,它的一个变体)函数的消息在调试函数时没有正确显示。简单地刷新 stdout/stderr 似乎也无济于事。
-- Makes it more like Haskell's trace
debug :: String -> α -> α
debug msg f = const f $ trace msg
-- dummy function
polyA :: (Num α) => α
polyA = debug "polyA\n" 0
-- another dummy function
polyB :: (Num α) => α
polyB = debug "polyB\n" polyA
main :: IO ()
main = do println (polyB :: Int )
println (polyB :: Int )
println (polyB :: Integer)
输出只是
0
0
在 stderr 中看不到任何东西(通常由 Eclipse 控制台中的红色文本表示)。