追踪功能呼叫:轻松轻量级地跟踪函数参数和结果以进行特别调试

[bsd3型,调试,图书馆][建议标签]

例子:

你有一个纯函数,它可能会给你错误的结果。

fib::Int->Intfib n | n<2=n|否则=fib(n-1)-fib(n-2)
>>>图30

插入对的呼叫traceFunction(跟踪功能)以帮助调试。

fib,fib'::Int->Intfib=traceFunction“fib”fib'fib'n|n<2=n|否则=fib(n-1)-fib(n-2)

现在,对纯函数的调用将提供其参数和结果作为调试信息。

>>>图3fib 1=1fib 0=0fib 2=1fib 1=1fib 3=00

希望这能帮助你了解你的bug。

请注意traceFunction(跟踪功能)使用多个参数的函数。。。

traceElem::等式a=>a->[a]->BooltraceElem=traceFunction“elem”元素

……“功能”完全没有参数。

alpha=traceFunction“精细结构常数”$e*e*c*mu0/2/h

参数和结果必须实现显示类型类。作为特殊情况,参数可能是函数和显示为下划线(_).

>>>:set-XNoMonomorphism限制>>>let map’=traceFunction“map”映射>>>地图'(2*)[1..3]映射[1,2,3]=[2,4,6][2,4,6]

已知缺陷:生成的函数是严格的,即使输入函数在其部分中是非严格的参数。特别地,

  • 如果其中一个参数是错误“foo”,当结果函数调用为将被评估错误“foo”; 不会输出跟踪消息

  • 如果其中一个参数在计算时未终止,则生成的函数调用将不会终止评估后终止;不会输出跟踪消息

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

  • 没有候选人
版本[RSS(RSS)] 0.1
依赖关系 基础(>=3.0.3.1 && <4.5)[细节]
许可证 BSD-3条款
版权所有 ©Dave Hinton 2011版权所有
作者 戴夫·辛顿
维护人员 bikerchu@googlemail.com
类别 调试
已上传 通过戴维·辛顿2011年12月20日7:23:25Z
分配
反向依赖关系 1直接,0间接[细节]
下载 总计1151人(过去30天内有4人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 用户上传的文档
生成状态未知[还没有报告]