Pages

5.24.2009

Dándole a Lisp

Bueno... últimamente, y después de programar un rato en Haskell, retomé los dialectos basados en Lisp y me dí cuenta que Lisp puede ser mejorado. En concreto, la característica que más me gustó de Haskell es la forma en que manipula las funciones. Si bien en ambos lenguajes son objetos de primera clase, Haskell desde mi perspectiva lo hace mejor. El uso intensivo de funciones de orden mayor como map y fold en lugar de escoger iteración o recursión, la composición de funciones, aplicación parcial implícita de funciones (o curried functions en inglés), etc., son las características que más puedo resaltar.

En particular, intento incluír en mi estilo de programación en Lisp a map y fold así como la aplicación parcial implícita; ésta última dándome más problemas dado que ningún dialecto principal de Lisp la maneja automáticamente. Si bien hay algunas macros que ayudan a realizar algo parecido, el tener un dialecto que las maneje desde el principio sin que el programador tenga que modificar algo en su Lisp, sería muy cómodo.

Lo anterior me estimuló a pensar cómo incluír dichas facilidades en el dialecto que programé hace tiempo. Necesitaré un poco más de tiempo para encontrar cómo hacerlo pero estoy seguro que es posible. Mientras tanto... estaré repasando (y haciendo por fin los ejercicios) de los varios libros de Lisp que he querido leer y no he terminado: On Lisp y Practical Common Lisp.