对于 Common lisp,我假设具有内省属性。如何将代码添加到 common lisp 代码中,以告诉我函数何时被调用以及何时完成执行。我想要获取任何 lisp 代码以及对代码的特殊修改。我认为用 lisp 的 AST 分析,这应该是可能的。

有帮助吗?

解决方案

您可以使用 (追踪功能) 对于一个简单的机制。对于更复杂的内容,这里有一个很好的讨论来自 comp.lang.lisp

[CL_USER]>
(defun fac (n)
    "Naïve factorial implementation"
    (if (< 1 n)
        (* n (fac (- n 1)))
        1))
FAC
[CL_USER]> (trace fac)
;; Tracing function FAC.
(FAC)
[CL_USER]> (fac 5)
1. Trace: (FAC '5)
2. Trace: (FAC '4)
3. Trace: (FAC '3)
4. Trace: (FAC '2)
5. Trace: (FAC '1)
5. Trace: FAC ==> 1
4. Trace: FAC ==> 2
3. Trace: FAC ==> 6
2. Trace: FAC ==> 24
1. Trace: FAC ==> 120
120
[CL_USER]> 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top