Aprendiendo Lisp

Desde hace algunas semanas estoy aprendiendo Lisp. Estoy bien cómodo programando en Python, y he aprendido bastante dando clases de Java. Pero Lisp tiene algunas cosas que no tienen esos lenguajes (y ningún otro, al parecer), y que me interesa aprender, en particular la capacidad de extender la sintaxis del lenguaje como práctica habitual de programación. Esto en Lisp se llama Macros, y no tienen nada que ver con los macros como se entienden en C/C++. Como siempre, hay que sacar tiempo de donde no hay, así que estoy yendo más lento de lo que quisiera.

Los ensayos de Paul Graham son muy buenos y sugerentes, y el libro Hackers and Painters tampoco tiene pierde. Obviamente no quiere decir que coincida 100% con lo que dice, pero habla bastante de Lisp, por no decir que está absolutamente entusiasmado con Lisp.

Menos bla,bla,bla, quiero empezar a escribir programas...

Primera tarea, instalar alguna versión de lisp en la computadora. En Ubuntu:

$ sudo apt-get install clisp clisp-doc

Ya tenemos lisp en la computadora. Ahora basta escribir:

$ clisp
"Common Lisp Linux"

Practical Common Lisp recomienda usar Emacs como editor de texto/entorno de desarrollo y la extensión SLIME (Superior Lisp Interaction Mode for Emacs). (Más información sobre Emacs, ver Wikipedia.) Por ahora voy a seguir los consejos del libro, así que a instalar Emacs y Slime.

Intenté usar la versión de Emacs que está en los repositorios de Ubuntu, y que se integra con Gnome. Pero las letras en la pantalla se veían francamente horribles. Creo que la pantalla del Macro Assembler que tenía en la Atari 800XL que usaba en el siglo 20 se veía mejor. Bien, siempre hay soluciones. Buscando en Google "pretty emacs", encontré esta página, donde se explica cómo instalar una versión de Emacs más reciente, compilada para que haga un render decente de los fonts. En la imagen se puede ver el resultado.

"Emacs pretty fonts thumb"

Segundo paso, aprender lo suficiente de Emacs como para crear un programa, guardarlo en un archivo y compilarlo. Emacs tiene fama de ser poco amigable, y lo es. En este post Erik Rasmussen explica con gracia cómo al comienzo no se explicaba por qué si Lisp es un lenguaje superior e increíble, es tan poco usado. Al menos eso es lo que se preguntaba él hasta que intentó usar Emacs.

Tercer y último paso, instalar SLIME. Slime es un entorno de desarrollo para programar en Lisp dentro de Emacs. En Ubuntu se puede instalar escribiendo:

$ sudo apt-get install slime

Como se explica aquí, también es necesario añadir lo siguiente al archivo ~/.emacs:

(setq inferior-lisp-program "/usr/bin/clisp")
(add-to-list 'load-path "/usr/share/emacs-snapshot/site-list/slime")
(require 'slime)
(slime-setup)
"Slime"

Join my free newsletter and receive updates directly to your inbox.