Programación en Lisp

De Gleducar, http://www.gleducar.org.ar

Icono puzzle

Esta propuesta didáctica carece de formato adecuado a las Gleducar:Manual de estilo de Gleduwiki.
Por favor, te rogamos que lo edítes para cumplir con ellas. No elimines este aviso hasta que lo hayas hecho.

Icono de copyedit

Puedes colaborar con Gleduwiki mejorando esta página o esta sección de la página.
En la página de discusión aparecen ideas concretas sobre cómo mejorarlo.

Tutorial de LISP

La memoria del compilador de lisp se compone de atomos. Los distintos tipos de atomos son: -Numeros: numeros enteros y reales. -Cadenas de caracteres: pueden contener cualquier caracter, se ponen entre comillas dobles "caracteres". -Simbolos: nombres o identificadores (para funciones, etc.)

La sintaxis en lisp se basa en pares (separados por un punto). Por ejemplo:

(a . b) (1 . 2) (a . 3.5) (0 . nil) nil es el simbolo nulo.

Entonces la suma de 2 y 3 seria:

(+ . (2 . (3 . 0))) se usa el 0 en lugar de nil...

Esto es un tanto complicado, entonces lisp lo puede abreviar de la siguiente manera:

(+ 2 3)

Tambien:

(+ 2 (- (/ 10 2) 2))

Y puede contener mas de tres operandos:

(+ 2 3 -2)

ya entonces conocemos los siguientes simbolos:

+, -, /, y por logica, *. Las cuatro operaciones fundamentales...

Ahora, que mas hace. En el manejo de variables, la forma de poner un valor en una variable es:

(set 'var 23)

el ' remplaza a quote, que fuerza el tratamiento como simbolo, para que por ejemplo: (funcion (a b c)) no sea tratado como la funcion "funcion" de la funcion "a" para b y c. Si se pusiera: '(a b c), a, b y c serian tratados como simbolos, no como funcion y argumentos.

Entonces, (set 'var 23) pone un 23 en la variable var. Para hacerlo mas simple se usa el (setq var 23).

Si se desea entrada desde el teclado se puede poner:

(setq var (read))

Para ver el contenido de una variable se puede usar la funcion print:

(print var), no (print 'var) dado que eso mostraria "var"... Por el quote, no? ;)

Entonces, las funciones mas basicas serian: +,-,*,/ set, setq read, print

Ahora, como crear nuestra propia funcion??

(defun func (var) "da el doble del argumento" (* 2 var) )

Bueno, da el doble del argumento pasado: (func 2) entonces da 4, etc. O sea, (defun nombre_de_funcion (argumentos) "descripcion" (lineas de la funcion) )


Eso es mas o menos todo... Despues, hay que probar...

¿Quién escribió el artículo?

Matías Ducasa

Copyright © 2002-2010 Asociación Civil Gleducar
Todo los contenidos de este sitio se encuentran bajo una licencia libre del tipo Copyleft
Este sitio ha sido desarrollado usando Software Libre y respeta los estándares web.
Además ha sido diseñado para verse correctamente usando cualquier navegador, en cualquier resolución de pantalla.