我正在开发一个简单的 Lisp 解释器。现在我正在尝试为它编写一个解析器。 LISP - Basic Syntax .我读到在 Lisp 中只有三种类型的 block :atom
、list
、string
。另外,我注意到 string
block 可以嵌套到 list
中,例如:
(format t "Some string block...~%")
.
可以将string
类型的构建 block 视为atom
block 吗?
最佳答案
首先,您选择作为“引用”的页面质量非常可疑。最明显的视觉危险信号是“非常规”(委婉地说)格式化 Lisp 代码的方式。
其次,block
在 Lisp 中有一个非常具体的含义。当他们使用这个词时,显然的意思是 token
.
第三,string
Lisp 中的类型是 atom
类型的子类型:
(atom "foo")
==> t
因此,您所问问题的答案是:是的,每个字符串都是一个原子。
你应该问的问题的答案是:引用CLHS ,而不是一些可疑的网站。
附言。有几个FLOSS可用的 Common Lisp 实现(例如, CLISP , SBCL ), 您可能想先看看他们是如何做事的。
关于Lisp:原子和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845918/