gpt4 book ai didi

Lisp 内省(introspection)?函数何时被调用以及何时退出

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:15 26 4
gpt4 key购买 nike

使用普通的 lisp,我假设内省(introspection)属性。我如何将代码添加到常见的 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]>

关于Lisp 内省(introspection)?函数何时被调用以及何时退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com