Vous êtes sur la page 1sur 5

Programacin en LISP

Programacin en LISP
Prlogo
Introduccin
Lisp es un lenguaje de programacin usado en el mundo de la inteligencia artificial. A diferencia de otros lenguajes de programacin, en Lisp, a pesar de ser un lenguaje con una cierta antigedad, no es un lenguaje del que se disponga de mucha documentacin, de hecho, casi toda la documentacin disponible esta en ingls. Hago uso de este medio para poder traducir a mi idioma, el castellano. Lisp se diferencia de otros lenguajes, en que la forma de entender la programacin no es la clsica que todo el mundo suele manejar, es decir, la forma de programacin es totalmente declarativa y no procedimental como en el caso de los famosos lenguajes de programacin C /C++ , Java , C# .NET , ASP , PHP , etc. Cuando se quiere implementar un problema en Lisp, ste se realiza escribiendo lo que se quiere conseguir y como, pero sin indicar paso a paso la secuencia de acciones que la computadora debe de realizar. Esta filosofa aunque parezca extraa, seguro que muchos programadores ya la han usado, ya que existen otros lenguajes declarativos como puedan ser el Prolog, Perl e incluso el mismo SQL. En estos lenguajes especificamos el qu queremos obtener sin preocuparnos del cmo.

Objetivos
Pues como he comentado antes, estamos hartos de encontrar siempre casi toda la documentacin disponible en un idioma que no nos interesa, puesto que todas las culturas deben proteger su legado y defenderse ante la invasin lingstica que estamos padeciendo ante el mundo anglosajn, que parece no darse cuenta que ellos no estn solos en este mundo. Por eso, y aunque no predique mucho con el ejemplo, animo a los dems escritores que publiquen y traduzcan en sus propios idiomas y que liberen el saber, para dejarlo ms accesible al resto del mundo. As que como habis podido observar, lo que simplemente pretendemos en este manual es, crear un manual legible para todo el mundo de habla hispana, explicar el lenguaje lisp, que a mi juicio es complicado de entender, y construir un manual del mismo lenguaje que sea la envidia de los manuales en ingls que podemos encontrar en la red.

Caractersticas del lenguaje


En su notacin, las expresiones estn expresadas de forma prefija, estando estas cerradas entre parntesis. >1 1 > (+ 2 3) 5 > (+ (- 5 2) (* 3 3)) 12 > (exit) Bye.

Programacin en LISP

Declarar funciones
Al igual que otros lenguajes de programacin, en Lisp podemos declarar funciones para modularizar los programas y hacerlos ms legibles en la medida de lo posible, reutilizando as cdigo escrito y separando distintas partes del problema a representar en mdulos. Esto se consigue con la palabra clave defun. (defun nombre-funcions (arg1 arg2 ... argn) comentarios (cuerpo ) ) (defun CUADRADO (x) "Mi funcion cuadrado" (* x x ) )

Palabras reservadas
car
Devuelve el primer elemento de una lista (car lista) > (CAR (A B C D)) A

cdr
Devuelve la lista sin su primer elemento (cdr lista) > (cdr (a b c)) (B C)

cond
La palabra cond ejecuta un flujo de control dependiendo de la condicin si es cierta o no. Es algo parecido al switch de C /C++ , Java , C# .NET , etc.. pero con la diferencia que en este caso lo que se pone en los case son condiciones lgicas y no constantes. (cond ((condicion1) bloque1) ((condicio2) bloque2) ... ((condicionN) bloqueN) ) > (defun notas (n) (cond ((< n 5) suspenso) ((< n 7) aprobado) ((< n 9) notable) (t sobresaliente) )) => NOTAS > (notas 8) => NOTABLE

Programacin en LISP

cons
Aade al principio de una lista dada un elemento (cons elem lista) > (cons a (b c d)) (A B C D)

defun
Define una funcin con un nombre el cual ser llamado mediante el comando (nombre-funcion args) y que tiene como argumentos una lista de variables. El cuerpo es una lista que define qu hace la funcin y es sta la que ejecuta la accin. Esto se consigue con la palabra clave defun. (defun nombre-funcions (arg1 arg2 ... argn) comentarios (cuerpo ) ) (defun CUADRADO (x) "Mi funcion cuadrado" (* x x ) )

endp
Cierto (T, de true) si la lista est vaca, y nil (sin valor) en caso contrario (endp '(a b c)) >nil (endp '()) >T

eq
Se utiliza eq para saber si dos tomos son iguales, independientemente de la referencia. Sintaxis (eq X Y) (eq (eq (eq (eq (eq 3 3) => T 3 3.0) => NIL 3.0 3.0) => NIL (first (a b c)) a) => T (cons a (b c)) (a b c)) => NIL

Programacin en LISP

equal
Es utilizado equal para saber si dos listas son iguales, independientemente de la referencia. (equal (cons a (b)) (cons a (b))) => T

list
Construye una lista a partir de sus elementos (list elem1 elem2 elem3 .. elemN) > (list a (+ 1 2) nil) (A 3 NIL)

quote
La funcin quote evita la evaluacin de su argumento. > (quote (+ (- 5 2) (* 3 3))) (+ (- 5 2) (* 3 3))

Enlaces Externos
Lo que hizo diferente a Lisp [1] Ensayo de Paul Graham donde expone las principales caractersticas del lenguaje.

Referencias
[1] http:/ / paulgraham. es/ ensayos/ lo-que-hizo-diferente-a-lisp. html

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Programacin en LISP Fuente: http://es.wikibooks.org/w/index.php?oldid=192689 Contribuyentes: Chlewey, Ciencia Al Poder, Gambrinus, Kronoss, Luckas Blade, ManuelGR, 24 ediciones annimas

Fuentes de imagen, Licencias y contribuyentes


Archivo:50%.svg Fuente: http://es.wikibooks.org/w/index.php?title=Archivo:50%.svg Licencia: Public Domain Contribuyentes: Siebrand Archivo:25%.svg Fuente: http://es.wikibooks.org/w/index.php?title=Archivo:25%.svg Licencia: Public Domain Contribuyentes: Karl Wick Archivo:00%.svg Fuente: http://es.wikibooks.org/w/index.php?title=Archivo:00%.svg Licencia: Public Domain Contribuyentes: Siebrand

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

Vous aimerez peut-être aussi