Atome in Clojure und Atome in Common Lisp (und die meisten anderen Lisps) sind zwei völlig unabhängige Konzepte. Sie haben nichts miteinander zu tun, außer den gleichen Namen zu haben.
Es gibt keinen "Unterschied". Es würde fragen, was ist der Unterschied zwischen einem Fenster in einem Haus und einem Fenster auf Ihrem Computerbildschirm? Es macht keinen Sinn, Unterschiede zu identifizieren, da die beiden Konzepte nicht verwandt sind.
'Atome' in Clojure verwalten Zustand.
'Atome' in Lisp ist ein Wort für alle Datentypen, die keine Cons-Zellen sind (wie Zahlen, Zeichen, Strings, Symbole, ...).
In Lisp ist die Funktion ATOM
einfach wie folgt definiert:
(defun atom (object)
(not (consp object)))
Da Clojure keine Nachteile Zellen hat und keine Funktion consp
, ist es nicht möglich (not (consp object))
zu sagen. Daher existiert in Clojure kein Lisp-Konzept wie "atom". Beachten Sie, dass Clojure eine Funktion cons
hat, aber es erstellt keine Cons-Zellen wie in Lisp.
Es ist erwähnenswert, dass Clojure immer noch Lisp-Atome in Symbolen, Schlüsselwörtern, Zahlen, Strings usw. hat, aber es ist einfach nicht Teil des Clojure-Vokabulars. –
@John Cromartie: Das kann nicht wirklich sein. Clojure hat keine Cons-Zellen. In Lisp Atom ist definiert als "nicht Nachteile". Da clojure keine Cons-Zellen hat, ist das Konzept eines Lisp-Atoms in Clojure nicht definiert. Beachten Sie, dass Clojure eine Cons-Operation hat, aber keine Cons-Zellen erstellt. –