Haskell打印线功能

时间:2011-12-04 04:08:36

标签: haskell functional-programming

我是Haskell的新手,我想知道是否有办法在Haskell的函数中输出'debug'行? I.E.我想调试输入函数的值

我目前的代码是

import Prelude

foo(a,b,c) 
    print("input a : " ++ a)
    = a + b + c

main = print(foo(1, 2, 3))

我有编程经验,但这是我第一次接近函数式编程,所以任何帮助都会受到赞赏。

2 个答案:

答案 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)