martes, octubre 30, 2007

Lisp. 1ª lección

Lo primero la descarga del interprete.

Lo mejor es descargar una implementación del ANSI Common Lisp. En el siguiente enlace podremos seleccionar un ejecutable adecuado para nuestro Sistema Operativo:

http://clisp.cons.org/ Seleccionar SourceForge download.

La versión de Clisp que me he bajado es la 2.42. Ocupa algo menos que 8 Mbytes.

Descomprimimos el contenido y ejecutamos clisp.exe

El interprete nos contestará con el prompt:

>

Ahora un poquito de teoría:

Tipos de datos en Lisp:

Átomos: símbolos y números. Por ejemplo: 5, 6, a, persona, aula_5

Listas. Por ejemplo: (5 a 7 5)


Como separadores se permiten el espacio y el tabulador.

Las expresiones Lisp se evalúan en el momento y se devuelven un resultado.

Los números se evalúan a si mismo.

Por lo tanto >5 devuelve 5.

Las funciones son de 2 tipos: primitivas de Lisp o las definidas por el usuario.

La notación siempre es prefijo. Primero se indica la función y luego se pasan los argumentos.

(funcion arg1 arg2)


Evalación en Lisp:

Cuando Lisp detecta un paréntesis izquierdo espera encontrar un nombre de función. Si no es así devuelve un error.

>(+ 500 300)

Devuelve 800.

(* 3 4)

Devuelve 12.

Variables:

Setf es una función primitiva especial.

>(setf simbolo expresion)


Si no hay error se asigna el valor de la expresión al símbolo.

Además Lisp devuelve el valor de la expresión.


>(setf a 5)

Devuelve 5.

Setf permite múltiples parejas:

>(setf var1 8

var2 15

var3 5000)

En un caso así devuelve el último valor: 5000.

Evaluación de variables:

>Var2

Devuelve 15.

Quote es otra función especial.

Consigue que las expresiones no se evalúen.

(quote expresion)

(quote Carlos)

Devuelve Carlos pero sin evaluar.

>(setf var1 (quote a))

Devuelve a.

> var1

Devuelve a.


FUNCIONES DE SELECCIÓN


(first lista)

Devuelve el primer elemento de la lista.


(rest lista)

Devuelve la lista quitándole el primer elemento.


(nth entero lista)

Selecciona el elemento de la lista especificado por el número.

(nth 1 (quote (a (b c) d e )))

Devuelve (b c)

(nthcdr entero lista)

Devuelve la lista que queda al eliminar por delante tantos elementos como indica el entero.

(last lista)

Devuelve la lista que contiene al último elemento.

(butlast lista)

Coge toda la lista menos el último elemento.

En lugar de quote se puede sustituir por el carácter reservado comilla: ‘.

(quote xxxx) equivale a ‘xxxx

Bueno, ya está bien por hoy.
Mañana la segunda lección y el planteamiento del primer problema típico de la asignatura "Inteligencia Artificial".

2 comentarios:

Anónimo dijo...

hola podrias poner ejercicios con menu y pidiendo que ingrese el numero e imprimir resultados... como en pascal

Aitor Iriarte dijo...

Perdona el retraso pero no te imaginas el trabajo que tengo y el poco tiempo que le puedo dedicar a esto :-(

Te contesto con un nuevo post. Busca la entrada del día 3 de agosto de 2010.

Saludos.