使用常见的lisp,我假设内省属性.如何将代码添加到常用的lisp代码中,这些代码将告诉我何时调用函数以及何时执行完毕.我想采取任何lisp代码和代码的这种特殊修改.我想通过lisp的AST分析,这应该是可能的.
您可以使用(trace function)
简单的机制.对于更复杂的内容,这是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]>