公共Lisp谓词

公共Lisp谓词,lisp,common-lisp,predicate,Lisp,Common Lisp,Predicate,您知道在Common Lisp中哪里可以获取谓词的源代码吗?(谓词的内容,如果您愿意的话。)例如,setq的源代码,string=etc 谢谢 通用Lisp开发环境通常提供一种在文件中查找源代码定义的方法。 或者,如果已将Lisp环境配置为保存定义,则可以恢复谓词和其他函数的源 您还可以在开源lisp实现的lisp文件中进行搜索。例如,在Clozure中,CLsetq是在发行版的编译器/nx1.lisp文件中定义的。一个技巧是在搜索词的前面放置一个空格,以绕过匹配项,如(setqsetq不是谓词

您知道在Common Lisp中哪里可以获取谓词的源代码吗?(谓词的内容,如果您愿意的话。)例如,setq的源代码,string=etc


谢谢

通用Lisp开发环境通常提供一种在文件中查找源代码定义的方法。

或者,如果已将Lisp环境配置为保存定义,则可以恢复谓词和其他函数的源


您还可以在开源lisp实现的lisp文件中进行搜索。例如,在Clozure中,CL
setq
是在发行版的编译器/nx1.lisp文件中定义的。一个技巧是在搜索词的前面放置一个空格,以绕过匹配项,如
(setq

setq不是谓词。它甚至不是函数,这就是为什么您无法通过IDE找到它。STRING=是谓词和函数,因此效果更好


“predicate”的意思是“primitive”吗?

对于至少SBCL,SLIME可以按“M-”来查找定义但是,您需要从源代码处编译SBCL才能工作,因为源定义的路径嵌入在二进制文件中,如果使用二进制发行版,则源文件可能不会位于同一位置。

这通常是Lisp开发环境(如SLIM)的一项功能您正在使用。您还必须安装Lisp发行版的源代码才能导航到它。谢谢!我不使用SLIME,但我会尝试。这提供了谓词的代码源,如setq、字符串比较等?我使用MCLIDE Lisp开发环境(与SLIME相同的后端)进行了检查使用四种不同的通用Lisp实现:Clozure CL、SBCL、CLISP和MCL。两者都无法查找
SETQ
的定义(即使Clozure在编译器/nx1.Lisp中有定义)。只有Clozure和MCL能够找到
STRING=
的定义。您可能会在核心函数之外找到更好的运气。我正在搜索函数的源代码,如STRING=,CHAR=…很抱歉出现此错误。