我一直在完成 SICP 的最后几个练习第 1 章,其中几个练习使用高阶函数。目前,我正在尝试调试 1.45 解决方案中的一个问题,该问题引发了元数不匹配。产生误差的函数是对定点函数求解器两次应用平均运算的结果。
这将使我的调试工作更加努力a lot如果我可以转储某种过程的表示形式,那么会更容易,因为该过程已通过其他几个过程运行,这些过程在引发错误之前会对其进行更改。我查看了 DrRacket 的调试文档,添加了(require racket/trace)
and (require errortrace)
我的模块,我想我熟悉调试系统的所有功能 - 但我仍然不知道如何做到这一点。
DrRacket 的答案将是理想的,但任何事情都有帮助。
添加(需要球拍/跟踪)不会在控制台中引发任何程序显示。你想使用(trace function-name)
当您在跟踪调用中使用给定函数时,这将在控制台中打印紫色(默认颜色)线。例子
(define sum (λ (x y) (+ x y)))
(define multiply
(λ (x y)
(multiply-aux x y x)
))
(define multiply-aux (λ (x y res)
(if (= y 0) 0
(if (= y 1) res
(multiply-aux x (- y 1) (sum res x))))))
(require racket/trace)
(trace sum)
在控制台中:
> (multiply 4 5)
>(sum 4 4)
<8
>(sum 8 4)
<12
>(sum 12 4)
在 DrRacket 6.0.1 中测试
如果您需要更多帮助,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)