Common Lisp中的原子与Clojure中的原子有什么区别?

haw*_*eye 14 lisp clojure common-lisp

以下几讨论了原子如何在Clojure中工作.它并没有充分说明Clojure和其他lisp方言中原子之间的差异.

Common Lisp中的原子和Clojure中的原子之间的主要区别是什么?(CL中存在的Clojure中的atom定义缺少什么?)

Rai*_*wig 19

Clojure中的原子和Common Lisp中的原子(以及大多数其他Lisps)是两个完全不相关的概念.除了具有相同的名称之外,它们彼此无关.

没有区别'.它会问房子里的窗户和电脑屏幕上的窗口有什么区别?识别差异是没有意义的,因为这两个概念是无关的.

Clojure中的"原子"管理状态.

Lisp中的"Atoms"是所有非缺陷单元格数据类型的单词(如数字,字符,字符串,符号......).

在Lisp中,函数ATOM简单地定义为:

(defun atom (object)
   (not (consp object)))
Run Code Online (Sandbox Code Playgroud)

由于Clojure没有cons细胞而没有功能consp,所以不可能说(not (consp object)).因此,在Clojure中不存在像'atom'这样的Lisp概念.请注意,Clojure有一个函数cons,但它不像Lisp那样创建cons单元格.

  • 值得注意的是Clojure在符号,关键字,数字,字符串等方面仍然有Lisp原子,但它不是Clojure词汇的一部分. (7认同)
  • @约翰·克罗马蒂(John Cromartie):那不可能。Clojure没有缺点细胞。在Lisp中,原子定义为“非劣势”。由于clojure没有cons细胞,因此在Clojure中未定义Lisp原子的概念。请注意,Clojure具有cons操作,但不会创建cons单元格。 (2认同)