主要观点:
- 介绍了 Common Lisp 中符号(symbol)、包(package)等相关概念及特性。
- 详细阐述了符号的定义、用途、名称大小写规则等。
- 讲解了包的概念、符号如何添加到包中、包之间的关系及作用。
- 涉及到与符号相关的各种操作,如查找符号、绑定符号等。
- 还讨论了宏(macro)与符号的关系、特殊符号(T 和 NIL)等内容。
关键信息:
- 符号是用于标识各种实体的数据结构,不是字符串,有相关属性如 symbol-function、symbol-value 等。
- 包类似其他语言的命名空间,是实际的数据结构,可直接查询和操作,用于区分不同的代码实现。
- Lisp 阅读器(Lisp Reader)在读取代码时将符号名映射到符号数据结构,通过 intern 函数进行操作。
- 打印读取一致性(print-read consistency)规定了符号打印和读取的规则。
- 常见的命名约定如全局变量加“*”等。
- 宏 defpackage 用于定义包,可指定继承的包和导出的符号等。
重要细节:
- 示例代码展示了符号在不同场景下的使用,如函数定义、变量绑定等。
- 详细说明了各种函数(如 symbol-name、symbol-function、boundp、fboundp 等)对符号的操作。
- 介绍了关键字(keyword)在不同包中的使用及作用,避免命名冲突。
- 解释了符号成为“无家可归”的几种情况及相关操作。
- 提及 SLIME 中编译函数时如何确定包的相关细节。
总结:本文全面深入地讲解了 Common Lisp 中关于符号和包的知识,通过大量示例和详细解释,帮助读者理解这些概念及其在编程中的应用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。