Haskell打印线功能

Ala*_*ter 11 haskell functional-programming

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

我目前的代码是

import Prelude

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

main = print(foo(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

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

ham*_*mar 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)
Run Code Online (Sandbox Code Playgroud)

trace是一个在返回第二个参数之前打印其第一个参数的函数.但是,它不是引用透明的,所以它只应该用于调试.

另请注意,括号不用于Haskell中的函数应用程序,仅用于分组.

  • @ user551841:不要Google,[Hoogle](http://www.haskell.org/hoogle/?hoogle=show)!它是Haskell文档的专用搜索引擎,它具有相当独特的功能,能够通过type_搜索函数.如果你要进入Haskell,你可能也会得到它. (13认同)

Ada*_*ner 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)
Run Code Online (Sandbox Code Playgroud)