Acercarse a SICP en Clojure en lugar de Scheme

11

Soy un estudiante de licenciatura de tercer año en un programa de ingeniería de software, y le planteé la idea de leer el SICP a un asesor para obtener una comprensión más profunda y fundamental de los principios detrás de todo este software que diseñamos.

Sugirió no aprender Scheme para completar el libro (porque no es tan común como los dialectos modernos de Lisp) sino hacer los ejercicios en Clojure.

Es un libro ya difícil, si intento los ejercicios del libro en el Clojure más moderno, ¿cómo funcionaría? Por ejemplo, no puedo encontrar ninguna solución real, la sintaxis que enseñan para Scheme es diferente, etc.

ironicaldiction
fuente

Respuestas:

14

En mi primer año en la universidad, el primer curso de programación que tomé fue usar SICP (eso fue en 1988). Sin embargo, tuve un problema similar como el tuyo: para mi propia computadora (en realidad una Commodore Amiga), no había una implementación de Scheme disponible en ese momento, solo un dialecto Lisp diferente (no recuerdo su nombre).

Sin embargo, dada la flexibilidad de Lisp, era bastante simple "emular" la sintaxis de Scheme simplemente agregando las macros y funciones lisp faltantes en unos pocos scripts. En realidad, esto fue suficiente para implementar todos los ejercicios del capítulo 1 al 3 necesarios durante el curso (tenga en cuenta que SICP en realidad no requiere la pila completa de esquemas, un pequeño subconjunto es todo lo que necesita).

Entonces, dado que Clojure es AFAIK un dialecto Lisp moderno, supongo que podría hacer algo similar, lo que le brinda la opción totalmente libre de escribir cosas en Scheme o Clojure o una mezcla de ambos.

Por supuesto, también será posible resolver los ejercicios directamente en Clojure, ambos idiomas son muy similares. Más importante aún, SICP no se trata de la sintaxis del lenguaje de programación , se trata del uso correcto de las abstracciones en la programación (por ejemplo, con funciones, datos y objetos). Por lo tanto, no piense demasiado en los posibles problemas de sintaxis, estos no están en el centro de atención de este libro y probablemente sean de menor importancia.

Doc Brown
fuente
66
El único problema que preveo es que clojure carece de 1. TCO ( recursolo maneja la recursión de cola , no las llamadas generales) y 2. la falta de la call-with-current-continuationcual es necesaria para el capítulo 4.
Daniel Gratzer
2
@jozefg: Creo que si el OP se lleva a cabo con éxito a través de los capítulos 1-3, probablemente lo hará en el punto en que ya no se quejará de las diferencias sintácticas entre Clojure y Scheme ;-)
Doc Brown
@DocBrown considere editar la aclaración sobre los capítulos 1-3 en su comentario anterior en la respuesta (y posiblemente explicando los problemas con el capítulo 4, si está de acuerdo con el comentario sobre estos )
mosquito
@gnat: el comentario seguramente es correcto, pero en mi humilde opinión, es un poco esencial. La parte importante de mi respuesta es el último párrafo.
Doc Brown
0

Encontré su pregunta justo después de encontrar este sitio que parece que está en su callejón (aunque puede haberlo encontrado o una alternativa en los meses intermedios): SICP en Clojure

Paul Bissex
fuente