Haskell - 如何打印函数中的某些值以进行调试?

win*_*412 4 haskell

我是 Haskell 新手,我想做一些有如下副作用的事情:

i = 3.0

main :: IO ()
main = let m = print i in putStrLn "Hello world"
Run Code Online (Sandbox Code Playgroud)

i然后我可以知道运行时的值main,但I没有打印。我!之前添加过m,但它也不起作用。我想知道如何破解这个,提前谢谢!

n. *_* m. 5

供调试、使用的trace 朋友使用。

import Debug.Trace
i = 3.0

main :: IO ()
main = traceShow i $ putStrLn "Hello world"
Run Code Online (Sandbox Code Playgroud)

现场观看

请注意,跟踪显示在标准错误流上,正如调试输出应有的那样。

您使用的函数trace不必是 IO 类型的。例如,这也将起作用:

add a b = a + traceShow i b
Run Code Online (Sandbox Code Playgroud)

跟踪函数对于 Haskell 来说有点陌生,因为它们在技术上不纯粹。然而,副作用的范围有限,程序本身无法观察到,所以还可以。

更多信息