Common Lisp关键字列表
我在哪里可以找到常见Lisp关键字的列表,这是Common Lisp中使用的保留字列表,如ash,setf等单词。如果列表具有关键字的用法,那将是非常好的,无论如何,所有我可以找到一些遍布网络的示例程序中散布的关键字。 我无法搜索关键字,除非我已经知道关键字,并且我不知道关键字,除非它在某个列表中。
谢谢
如果使用关键字,则表示语言定义的运算符,函数和宏,则可以通过执行以下操作来获取这些符号的列表:
(let (result)
(do-external-symbols (s :common-lisp)
(push s result))
(sort result #'string<))
(我不打算在这里显示978个符号的完整结果列表)。 你可以在CLHS上了解他们每个人,特别是检查符号索引。
@Dirk是正确的 - 枚举Common-Lisp
包中的符号是回答您实际询问的问题的最直接方式。
您还可以使用(除其他之外) apropos
“搜索”符号,但对于像ash
和setf
这样时髦的“遗留”符号,您可能永远无法猜出该名称。 希望尽早检查documentation
的使用并describe
。
假设你使用某种IDE,比如Emacs + Slime,你也可以使用Inspector来检查一个Package。 例如(swank:inspect-in-emacs 'common-lisp)
从一个*slime-repl
窗口中,或者从菜单中选择SLIME→Debugging→Inspect。 你会得到像这样的东西:
#<SYMBOL {100F56698F}>
--------------------
Its name is: "COMMON-LISP"
It is unbound.
It has no function value.
It is internal to the package: COMMON-LISP-USER [export] [unintern]
Property list: NIL
It names the package: #<PACKAGE "COMMON-LISP">
点击#<Package…>
链接查看其信息; 该包中的所有符号都应该有超链接。 不同的IDE可能会以自己的方式呈现信息,但其中大部分与上述内容非常相似。
作为一个附注,Common Lisp中的“关键字”指的是与其他语言不同的东西 - 关键字包中的一个符号。 你可以发现它们,因为它们以冒号开头。 一般来说,它们与C-中的枚举具有相似的作用,它们是一些独特但不重要的价值的名称,因此您可以便宜地测试它们。
Common Lisp中的符号用于很多事情,但是它们的基本思想是它们是一种数据类型,代表其他语言的实际标识符,如变量的名称(而不是其内容)。 在Common Lisp中,要运行的代码需要经历两个阶段 - 读取,将程序的文本转换为数据结构(并使用符号来表示标识符)以及评估,它实际运行存储在数据结构中的程序。 当评估者遇到符号时,它查找由该符号命名的变量的值。 然而,关键词有一个有趣的属性 - 它们是自我评估的,当评估者遇到它时,它不会查找它们的“价值”,它只是保留原始符号对象。 结合这一事实,读者可以跟踪所有先前读取的符号,以便当它第二次读取标识符时,它只返回现有的符号对象,您可以获得与前面提到的枚举相同的效果,这是很便宜的测试。 关键字在lisp中的任何地方都可以使用,你想给某个名称 - 哈希表中的关键字(尽管你可以使用任何比较相同的关键字,关键字只是方便的),但是当你想明确指定哪些参数时正在传递给一个函数等等
链接地址: http://www.djcxy.com/p/52367.html下一篇: Use alternate syntax highlighting in middle of TextMate2 comment