gpt4 book ai didi

common-lisp - 为什么每个常见的 lisp 都会返回所定义的内容

转载 作者:行者123 更新时间:2023-12-01 09:59:27 26 4
gpt4 key购买 nike

我想知道为什么每个常见的 lisp 函数/宏定义都会返回正在定义的内容?它可以返回 nil 或函数本身。为什么要返回定义的符号?有什么我可以做的吗?

> (defun foo ()) => foo

> (defmacro bar ()) => bar

最佳答案

我希望 Lisp 中的每个定义形式都返回已定义的名称(如 DEFUN)或已定义的对象(如 DEFCLASS) >).

这是一个有用的值,以后可以使用。在 Lisp 交互中,变量 ****** 具有最后的值。因此,您可以在带有解释器和编译器的 Lisp 中执行以下操作:

剪辑:

[1]> (defun foo-with-a-long-name (a) (+ a 42))
FOO-WITH-A-LONG-NAME

然后编译函数就是:

[2]> (compile *)
FOO-WITH-A-LONG-NAME ;
NIL ;
NIL

没有错误。让我们看看反汇编:

[3]> (disassemble *)

Disassembly of function FOO-WITH-A-LONG-NAME
(CONST 0) = 42
1 required argument
0 optional arguments
No rest parameter
No keyword parameters
4 byte-code instructions:
0 (CONST&PUSH 0) ; 42
1 (LOAD&PUSH 2)
2 (CALLSR 2 55) ; +
5 (SKIP&RET 2)
NIL

好的,看起来不错。

关于common-lisp - 为什么每个常见的 lisp 都会返回所定义的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18525791/

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