正如標題所示,出於某種原因,調試函數時,傳遞給trace
(以及其變體)函數的消息不能正確顯示。簡單地刷新stdout/stderr似乎也沒有做任何事情。Frege trace not printing
-- 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
什麼也沒有看到在標準錯誤(通常由紅色文本在Eclipse的控制檯來表示)。
也可以使用'traceLn'使它在「實時」打印 – Ingo
@Ingo是的,謝謝!我已經更新了包含該答案的答案。 –