Pregunta ¿Cuál es la diferencia entre Lisp-1 y Lisp-2?


Intenté entender la diferencia entre Lisp-1 y Lisp-2 y cómo esto se relaciona con Clojure, pero todavía no entiendo bien. ¿Alguien puede iluminarme?


76
2018-01-02 13:30


origen


Respuestas:


De acuerdo a wikipedia:

Si un espacio de nombres separado para las funciones es una ventaja es una fuente de contención en la comunidad Lisp. Por lo general, se lo conoce como el debate Lisp-1 vs. Lisp-2. Lisp-1 se refiere al modelo de Scheme y Lisp-2 se refiere al modelo de Common Lisp.

Básicamente se trata de si las variables y las funciones pueden tener el mismo nombre sin chocar. Clojure es un Lisp-1 lo que significa que no permite que se use el mismo nombre para una función y una variable simultáneamente.


50
2018-01-02 14:52



Le gustaría leer esto papel por Richard Gabriel. Es un resumen de los problemas que la comunidad Lisp estaba discutiendo en Lisp1 vs Lisp2. Es un poco denso y de movimiento lento en las primeras secciones, pero es mucho más fácil de leer cuando pasas la sección 5.

Básicamente, Lisp1 tiene un único entorno que asigna símbolos a valores, y esos valores pueden ser "regulares" o funciones. Lisp2 tiene (al menos) dos espacios de nombres (los símbolos tienen una ranura para su valor de una función y uno para un valor regular). Entonces, en Lisp2, puede tener una función llamada foo y un valor llamado foo, mientras que en Lisp1, el nombre foo puede referirse solo a un único valor (función o no).

Hay varios intercambios y diferencias de gusto entre los dos, pero lea el documento para los detalles. El libro de Christian Queinnec, "Lisp in Small Pieces" también tiene una discusión sobre las diferencias tejidas a través del texto.


59
2018-01-02 17:43