我是 scheme 的新手(我的 lisp 经验仅限于配置 emacs(,我试图更好地理解递归和缺点。我想获得调试输出,显示对函数的每次调用,以便我可以更好地可视化递归。
点头,我想出了
(define (last lst)
(if (null? (cdr lst))
(car lst)
(last (cdr lst))))
以获取列表的最后一个成员。它似乎有效。为了调试这个,我想出了
(define (last lst)
(print "Debug: " lst)
(if (null? (cdr lst))
(car lst)
(last (cdr lst))))
对于(last '(a b c d))
结果
Debug: (a b c d)
Debug: (b c d)
Debug: (c d)
Debug: (d)
在 CHICKEN 中,是否有一种更惯用的方法可以在每次调用函数时获取调试输出,以便我可以看到对函数的调用进度如何?
不,我基本上也是这样做的。 如果你想要更方便的东西,你可以尝试跟踪蛋,它可以自动给你调用嵌套和输入参数。
如果你想变得更漂亮一点,你可以使用 CHICKEN 附带的"羽毛"调试器。