In alcune implementazioni di Common Lisp possiamo dire che per la seguente espressioneIn clojure, is (= 'a' a) si riferisce allo 'stesso atomo'?
(eq 'a 'a)
È true
perché 'a
e 'a
sono i "stesso atomo".
Questo può essere a carico di attuazione, ma sembra che la frase (utilizzato in un insegnamento libro LISP popolare) presuppone che atomi dello stesso valore vengono memorizzate nella stessa posizione nella memoria.
In Java, due stringhe internate dello stesso valore sono memorizzati nella stessa posizione in memoria.
Ora Clojure su JVM eredita l'eredità di Java, ma è vero che due atomi in Clojure (su JVM) con lo stesso valore sono lo stesso atomo? (Vale a dire come funziona il meccanismo di stoccaggio atomo di Clojure?)
Dialetti di Common Lisp? Cosa sono questi? Quali dialetti? Le solite implementazioni comuni di Lisp implementano ANSI Common Lisp. Ci sono dialetti di CL, ma questo non è importante, dal momento che molte persone (inclusi gli utenti di Lisp) probabilmente non ne hanno mai sentito parlare. Ma ci sono molti dialetti di Lisp. - Qualsiasi Common Lisp restituirà T per (eq 'a' a). a non è nemmeno un atomo, ma un simbolo. Anche il termine "atomo" non ha senso in questo contesto. Storicamente tutto ciò che non è una cellula è un atomo. –
"In Java, due stringhe dello stesso valore sono memorizzate nella stessa posizione in memoria." - solo se sono entrambi internati. –