2009-08-23 21 views
20

Me gustaría implementar un intérprete Lisp en un dialecto Lisp principalmente como un ejercicio de aprendizaje. La única cosa que me desanima es la cantidad de opciones que hay en esta área. Principalmente, estoy un poco más interesado en aprender sobre algunos de los Lisp que han existido desde hace un tiempo (como Scheme o Common Lisp). No quiero usar Clojure para hacer esto por el simple hecho de que ya lo he usado. :-)¿Qué Lisp es mejor en el análisis?

¿Es uno de los sabores mejores que los otros en el análisis? ¿Y crees que es una buena idea decir implementar Scheme en Common Lisp (o viceversa)? ¿O habrá suficientes diferencias entre los dos para echarme?

Y si hace alguna diferencia, me gustaría algo que sea multiplataforma. Tengo una PC con Windows, una Mac y una caja Linux, y podría terminar escribiendo esto en cualquiera de ellos.

Respuesta

20

Hay algunos libros acerca de que:

Todos los libros anteriores son altos Se recomienda, aunque Anatomy of Lisp es viejo, difícil de conseguir y difícil de leer.

Tanto Scheme como Common Lisp están bien para su tarea.

Implementar Common Lisp es una tarea más grande, ya que el lenguaje es más grande. Por lo general, uno implementa Common Lisp mejor en Common Lisp, ya que existen bibliotecas Common Lisp que se pueden usar para nuevas implementaciones de Common Lisp. ;-)

+0

He leído los capítulos de PAIP y SICP sobre cómo escribir intérpretes de lisp en lisp, y creo que el primero es mejor para alguien nuevo en Common Lisp, aunque ambos son muy recomendables. – justinhj

+3

Vale la pena mencionar que el intérprete y el compilador Scheme de PAIP están escritos en Common Lisp, que responde a otro aspecto de la pregunta. – Pillsy

+4

¿Alguien más ve la ironía aquí, o solo soy yo? =) –

4

PLT Scheme es una excelente plataforma para experimentar con lenguajes de programación, especialmente Lispy. PLT tiene un analizador extensible (generalmente llamado lector en Scheme) que proporciona macros de lector para manipular la sintaxis incorporada; o puede reemplazar por completo el lector con el suyo. Si prefiere usar los analizadores y lexers tradicionales de lex/yacc, PLT viene con un módulo de herramientas de analizador que también los proporciona. Como beneficio adicional, tiene una documentación completa y un repositorio de paquetes de terceros (dos cosas que faltan en muchos Esquemas).

La implementación de referencia de Arc (arclanguage.org) es un ejemplo bastante simple y legible de de compilar un lenguaje que compila con Scheme. Utiliza principalmente el lector de PLT, con un par de macros de lector para cambiar los bits de la sintaxis de Scheme que difieren de los de Arc. También hay una implementación de JavaScript disponible en el repositorio de paquetes de PLT (planet.plt-scheme.org) si desea ver cómo implementar un lenguaje que no sea Lisp.

Cuestiones relacionadas