Ber*_*own 3 lisp introspection
使用常见的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]>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |