Common Lisp 哈希点#。 Reader宏

Common Lisp Hash-Dot #. Reader Macro

最近,我遇到了所谓的散列点 Common Lisp reader 宏,我想知道它是如何工作的以及它有什么作用。使用搜索引擎没有太大帮助,因此欢迎提供任何示例、解释,尤其是用例。

在规范中,这称为 sharpsign 点。它进行读取时评估。你可以在 Common Lisp hyper spec 中搜索它。我手头没有它,但我相信 Emacs 和 slime 可以查找 reader 宏的文档。执行 C-c C-d C-h 查看是否有相关命令。

#.foo 读作 (eval foo) returns。因此:

CL-USER> '((+ 1 2) #.(+ 1 2))
((+ 1 2) 3)
CL-USER> (read)
#.(* 3 4)
12