# 2.2 特定的读取语法

Emcas Lisp 中有很多特殊的哈希记法，来表示一些特殊的对象。

| 记法                       | 解释                                                                                             |
| ------------------------ | ---------------------------------------------------------------------------------------------- |
| '#<...>'                 | 没有读取语法的对象的打印表示                                                                                 |
| '##'                     | 名称为空字符串的内部注册（interned）符号的记法                                                                    |
| '#''                     | 这个是 function 的缩写，（查阅 匿名函数）                                                                     |
| '#:'                     | 未注册(uninterned)符号的记法。比如名称为foo 的符号： '#:foo'。（查阅 符号类型）                                           |
| '#N'                     | <p>循环结构的记法，其中的 N 是回环的位置。</p><p>(let ((a (list 1)))</p><p>  (setcdr a a))</p><p>=> (1 . #0)</p> |
| <p>'#N='</p><p>'#N#'</p> | '#N=' 给一个对象命名，而'#N#'代表那个对象，所以，当读取这个对象时，它们读取的是同一个对象，而不是副本                                       |
| '#xN'                    | 表示十六进制数字  ( '#x2a')                                                                            |
| '#oN'                    | 表示八进制数字 ('#o52')                                                                               |
| '#bN'                    | 表示二进制数字 ('#b101010')                                                                           |
| '#(...)'                 | 字符的文本属性 （查阅 文本属性和字符串）                                                                          |
| '#^'                     | 字符表 （查阅字符表类型)                                                                                  |
| '#s(hash-table ...)      | 哈希表 （查阅哈希表类型）                                                                                  |
| '?C'                     | 字符 （查询 基础字符语法）                                                                                 |
| '#$'                     | 当前字节码文件的文件名 (查阅 文档和编译）。这并不意味着在 Emacs Lisp 源文件中使用。                                              |
| '#@N'                    | 跳过余下的 'N' 个字符。这个一般在字符编译文件中使用，这并不意味着在 Emcas Lisp 源文件中使用。                                        |
