我是Haskell的新手,我想知道是否有办法在Haskell的函数中输出'debug'行? I.E.我想调试输入函数的值
我目前的代码是
import Prelude
foo(a,b,c)
print("input a : " ++ a)
= a + b + c
main = print(foo(1, 2, 3))
我有编程经验,但这是我第一次接近函数式编程,所以任何帮助都会受到赞赏。
答案 0 :(得分:19)
您正在寻找Debug.Trace.trace
。
import Debug.Trace
foo a b c = trace ("input a: " ++ show a) (a + b + c)
main = print (foo 1 2 3)
trace
是一个函数,在返回第二个参数之前打印它的第一个参数。但是,它不是引用透明的,因此它只应用于调试。
另请注意,括号不用于Haskell中的函数应用程序,仅用于分组。
答案 1 :(得分:8)
除了@ hammar对trace
的建议之外,您还可以使用traceShow
(也来自Debug.Trace,并且只是定义)
import Debug.Trace (traceShow)
foo a b c = traceShow (a, b, c) (a + b + c)
main = print (foo 1 2 3)