在Common Lisp中,称为“原子”的东西和符号之间有什么区别吗?
这些区别是否扩展到Lisp家族中的其他语言?
(我知道在Clojure中,“原子”有不同的含义,但我对“符号”的界限很感兴趣。)
在Common Lisp中,称为“原子”的东西和符号之间有什么区别吗?
这些区别是否扩展到Lisp家族中的其他语言?
(我知道在Clojure中,“原子”有不同的含义,但我对“符号”的界限很感兴趣。)
'atom'通常用于列表处理。在Common Lisp中,某物要么是非空列表,要么是原子。在以前,原子也被称为“原子符号”,这与稍有不同。现在,在Common Lisp中,原子不仅是符号,还包括其他任何不是cons单元的东西(例如:字符串,数字,哈希表,流等)。
如果某物不是原子(是cons),则可以使用CAR,CDR,FIRST和REST操作。
因此,原子是一组数据结构。符号是一种特定的数据结构,也恰好是一个原子。
> (pair? 1)
#f
> (pair? '(1 2 3))
#t
> (pair? 'a)
#f
(atom object)
被定义为(not (consp object))
。
cons
的东西通常都不能被分割。 - erjiang