Lia*_*avK 5 scheme sicp racket
我一直在研究SICP的最后几个练习,其中几个练习使用高阶函数.目前我正在尝试将我的解决方案中的问题调试到1.45,这会导致arity不匹配.提高误差的功能是两次对定点函数求解器应用平均操作的结果.
它将使我调试的努力了很多容易,如果我可以只转储某种程序表示,鉴于该程序已经通过其他几个能够改变它,它会引发错误之前的程序运行.我看过对DrRacket,增加了调试文件(require racket/trace)和 (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)
Run Code Online (Sandbox Code Playgroud)
在控制台中:
> (multiply 4 5)
>(sum 4 4)
<8
>(sum 8 4)
<12
>(sum 12 4)
Run Code Online (Sandbox Code Playgroud)
在DrRacket 6.0.1中测试过
如果您需要更多帮助,请告诉我.