Sunteți pe pagina 1din 5

Programacin en LISP - Wikilibros https://es.wikibooks.

org/wiki/Programacin_en_LISP

Programacin en LISP

Sumario
1 Prlogo
1.1 Introduccin
2 Caractersticas del lenguaje LISP
3 Declarar funciones (nuestras propias funciones)
4 Palabras reservadas
4.1 car
4.2 cdr
4.3 cond
4.4 cons
4.5 defun
4.6 endp
4.7 eq
4.8 equal
4.9 list
4.10 quote
4.11 Enlaces Externos

Prlogo
Introduccin
Lisp es un lenguaje de programacin usado en el mundo de la inteligencia Para ms informacin, vase el artculo
artificial. A diferencia de otros lenguajes de programacin, en Lisp, a Lisp en Wikipedia.
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 (https://es.wikibooks.org
/w/index.php?title=Programaci%C3%B3n_en_C/Desarrollo&action=edit)/C++ (https://es.wikibooks.org
/w/index.php?title=Programaci%C3%B3n_en_C%2B%2B/Desarrollo&action=edit), Java
(https://es.wikibooks.org/w/index.php?title=Programaci%C3%B3n_en_Java/Desarrollo&action=edit), C#
.NET (https://es.wikibooks.org/w/index.php?title=C_sharp_NET/Desarrollo&action=edit), ASP
(https://es.wikibooks.org/w/index.php?title=Manual_de_ASP/Desarrollo&action=edit), PHP
(https://es.wikibooks.org/w/index.php?title=Programaci%C3%B3n_en_PHP/Desarrollo&action=edit), etc.

Cuando se quiere implementar un problema en Lisp, ste se realiza escribiendo lo que se quiere conseguir y

1 de 5 07-08-17 17:37
Programacin en LISP - Wikilibros https://es.wikibooks.org/wiki/Programacin_en_LISP

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.

Caractersticas del lenguaje LISP


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.

Declarar funciones (nuestras propias funciones)


Al igual que otros lenguajes de programacin, en Lisp podemos declarar funciones definidas por el usuario 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)

NOTA: En algunos sistemas operativos la palabra reservada car es sustituida por first**

> (CAR (A B C D))


A

cdr

2 de 5 07-08-17 17:37
Programacin en LISP - Wikilibros https://es.wikibooks.org/wiki/Programacin_en_LISP

Devuelve la lista sin su primer elemento

NOTA: En algunos sistemas operativos, cdr es sustituido por REST**

(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 (https://es.wikibooks.org/w/index.php?title=Programaci%C3%B3n_en_C/Desarrollo&
action=edit)/C++ (https://es.wikibooks.org/w/index.php?title=Programaci%C3%B3n_en_C%2B%2B
/Desarrollo&action=edit), Java (https://es.wikibooks.org/w/index.php?title=Programaci%C3%B3n_en_Java
/Desarrollo&action=edit), C# .NET (https://es.wikibooks.org/w/index.php?title=C_sharp_NET
/Desarrollo&action=edit), 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) )

> (define notas (lambda (n)


(cond ((< n 5) "suspenso")
((< n 7) "aprobado")
((< n 9) "notable")
((= n 10) "sobresaliente") )))
> (notas 8)
"notable"

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 ) )

3 de 5 07-08-17 17:37
Programacin en LISP - Wikilibros https://es.wikibooks.org/wiki/Programacin_en_LISP

(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 3 3) => T
(eq 3 3.0) => NIL
(eq 3.0 3.0) => NIL
(eq (first (a b c)) a) => T
(eq (cons a (b c)) (a b c)) => NIL

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.

4 de 5 07-08-17 17:37
Programacin en LISP - Wikilibros https://es.wikibooks.org/wiki/Programacin_en_LISP

> (quote (+ (- 5 2) (* 3 3)))


(+ (- 5 2) (* 3 3))

Enlaces Externos
Lo que hizo diferente a Lisp (http://paulgraham.es/ensayos/lo-que-hizo-diferente-a-lisp.html) Ensayo de
Paul Graham donde expone las principales caractersticas del lenguaje.

Obtenido de https://es.wikibooks.org/w/index.php?title=Programacin_en_LISP&oldid=306952

Se edit esta pgina por ltima vez el 28 jun 2016 a las 22:28.
El texto est disponible bajo la Licencia Creative Commons Atribucin-CompartirIgual 3.0; pueden
aplicarse trminos adicionales. Vase Trminos de uso para ms detalles.

5 de 5 07-08-17 17:37

S-ar putea să vă placă și