En algunas implementaciones de Common Lisp podemos decir que para la siguiente expresiónEn clojure, ¿(= 'a' a) se refiere al 'mismo átomo'?
(eq 'a 'a)
Es true
porque 'a
y 'a
son el "mismo átomo".
Esto puede ser dependiente de la implementación, pero parece que la frase (utilizado en un libro popular enseñanza LISP) supone que los átomos del mismo valor se almacenan en la misma ubicación en la memoria.
En Java, dos cadenas internadas del mismo valor se almacenan en la misma ubicación en la memoria.
Ahora Clojure en la JVM hereda el legado de Java, pero ¿es cierto que dos átomos en Clojure (en JVM) que tienen el mismo valor son el mismo átomo? (Es decir, ¿cómo funciona el mecanismo de almacenamiento átomo de Clojure?)
¿Dialectos de Common Lisp? ¿Que son estos? ¿Qué dialectos? Las implementaciones de Common Lisp habituales implementan ANSI Common Lisp. Hay dialectos de CL, pero eso no es importante, ya que la mayoría de las personas (incluidos los usuarios de Lisp) probablemente nunca han oído hablar de ellos. Pero hay muchos dialectos de Lisp. - Cualquier Common Lisp devolverá T para (eq 'a' a). a tampoco es un átomo, sino un símbolo. El término 'átomo' tampoco tiene sentido en este contexto. Históricamente, todo lo que no es una celda de cons es un átomo. –
"En Java, dos cadenas del mismo valor se almacenan en la misma ubicación en la memoria". - solo si ambos están internados –