用CHICKEN可视化递归函数调用的正确方法是什么?

时间:2019-06-11 13:19:10

标签: debugging recursion chicken-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中,是否有更惯用的方法来获取对函数的每次调用的调试输出,所以我可以看到对函数的调用如何进行?

1 个答案:

答案 0 :(得分:1)

不,基本上我也是这样做的。如果您想要更方便的方法,可以尝试使用trace egg,它可以自动为您提供调用嵌套和输入参数。

如果您想变得更高级,可以使用CHICKEN随附的"Feathers"调试器。