Programación en Lisp
De Gleducar, http://www.gleducar.org.ar
|
Esta propuesta didáctica carece de formato adecuado a las Gleducar:Manual de estilo de Gleduwiki.
|
|
Puedes colaborar con Gleduwiki mejorando esta página o esta sección de la página. |
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...