A partir del código fuente Clojure, lang/LispReader.java
:
static private Object interpretToken(String s) throws Exception{
if(s.equals("nil"))
{
return null;
}
De lang/RT.java
:
static public void print(Object x, Writer w) throws Exception{
{
...
if(x == null)
w.write("nil");
Así nil
es la representación de Clojure para la plataforma subyacente de null
. nil
no aparece en ningún otro lugar en la fuente de Java para Clojure. La única diferencia entre nil
y null
es que uno es Clojure y el otro es Java, pero son esencialmente alias, convertidos de ida y vuelta a la perfección según lo necesiten el lector y la impresora cuando van de Clojure a Java a Clojure.
Sí, nil
puede causar NullPointerException
s. Intenta llamar a cualquier método de Java en el nil
, obtendrás un NPE, p.
(.tostring nil)
El código fuente Clojure es bastante fácil de leer cuando se trata de cosas como esta, darle un aspecto.
No necesariamente. :-) También tengo una clase java en el traceback. –