Атомы в Clojure и атомы в Common Lisp (и большинстве других Lisp) - это две совершенно не связанные концепции. Они не имеют ничего общего друг с другом, кроме того, что имеют одно и то же имя.
Разницы нет. Было бы спросить, в чем разница между окном в доме и окном на экране вашего компьютера? Различать различия не имеет смысла, поскольку эти два понятия не связаны.
«Атомы» в Clojure управляют состоянием.
«Атомы» в Лиспе - это слово для всех типов данных, которые не являются консолидированными ячейками (например, числа, символы, строки, символы, ...).
В Лиспе функция ATOM
просто определяется как:
(defun atom (object)
(not (consp object)))
Так как Clojure не имеет cons-ячеек и не имеет функции consp
, невозможно сказать (not (consp object))
. Таким образом, в Clojure не существует понятия Lisp, такого как «атом». Обратите внимание, что Clojure имеет функцию cons
, но она не создает cons-ячейки как в Lisp.