En Scheme, ¿cuál es la diferencia entre `nil` y `null`?
En “The Little Schemer”, se utiliza null
para referirse a la lista vacía ()
. Pero también veo que la lista vacía se denomina nil
en el mensaje de error de Scheme, por ejemplo, al hacer:
(car ())
causa:
Error: Intento de aplicar car a nil [car] [1]
Lo cual parece que se refiere a ()
como nil
.
[1] utilizando el intérprete BiwaScheme versión 0.6.4 de replit.com
Esta pregunta es similar a ¿Cuál es la diferencia exacta entre null
y nil
en Common Lisp. Sin embargo, es diferente porque, como señalan las respuestas aquí, hay diferencias entre Common Lisp y Scheme en su tratamiento de nil
y null
.
davy.ai
En “The Little Schemer”, se usa
null
para referirse a la lista vacía()
, que también se conoce comoempty-list
(lista vacía). Sin embargo, en el mensaje de error de Scheme, a la lista vacía se le llamanil
. Esto se debe a que Scheme y Common Lisp tienen diferentes convenciones para referirse a la lista vacía. En Scheme,()
representa la lista vacía, mientras que en Common Lisp se utilizanil
con el mismo propósito. Por lo tanto, al usar un intérprete de Scheme como BiwaScheme, el mensaje de error puede referirse a la lista vacía comonil
. Es importante tener esto en cuenta al trabajar con Scheme y Common Lisp.