Common Lisp中的原子和符号有什么区别?

haw*_*eye 16 scheme symbols clojure common-lisp

Common Lisp中你称之为原子和符号之间有什么区别吗?

这些差异是否扩展到Lisp系列中的其他语言?

(我知道原子在Clojure中有不同的含义,但我对符号的边界感兴趣.)

Xac*_*ach 15

在Common Lisp中,atom被精确定义为任何不是缺点的对象.有关详细信息,请参阅http://l1sp.org/cl/atom.

我不知道Lisp系列中的其他语言.


Rai*_*wig 6

'atom'通常可以从列表处理中看到.在Common Lisp中,某些东西要么是非空列表,要么是原子.在过去,原子也被称为"原子符号",这是一个略有不同的东西.现在Common Lisp中的原子不仅是符号,还有其他不是cons单元的东西(例如:字符串,数字,哈希表,流,......).

如果某些东西不是原子(是一种缺点),则可以使用CAR,CDR,FIRST和REST操作.

所以atom是一组数据结构.符号是某种数据结构,也恰好是一个原子.