Lisp:原子和字符串

Lisp: atom and string

我正在开发一个简单的 Lisp 解释器。现在我正在尝试为它编写一个解析器。 LISP - Basic Syntax。我读到在 Lisp 中只有三种类型的块:atomliststring。另外,我注意到 string 块可以嵌套到 list 中,例如:

(format t "Some string block...~%").

可以将 string 类型的积木视为 atom 积木吗?

首先,您选择作为 "reference" 的页面质量 非常 可疑。最明显的视觉危险信号是 "unconventional"(委婉地说)格式化 Lisp 代码的方式。

第二,block in Lisp has a very specific meaning. When they use that word they, apparently, mean token.

第三次, string type in Lisp is a subtype of type atom:

(atom "foo")
==> t

因此,您所问问题的答案是:是的,每个字符串都是一个原子。

你应该问的问题的答案是:参考 CLHS,而不是一些可疑的网站。

PS。有几个 FLOSS Common Lisp 实现可用(例如, CLISP, SBCL), 您可能想先看看他们是如何做事的。