Professional Documents
Culture Documents
Caractersticas.
Lenguaje Interpretado
Tambin posible compilado
Todas las variables son punteros
Liberacin automtica de memoria (automatic garbage collection)
Eficiencia menor que otros lenguajes (causas: es interpretado, liberacin automtica
de memoria).
Adecuado para prototipados y clculo simblico.
Ventajas.
Recoleccin de basura, recoleccin automtica de memoria no utilizada.
Computacin con expresiones simblicas, ms que con nmeros; es decir, los
patrones de bits en una memoria de ordenador y en los registros pueden representar
smbolos cualesquiera, y no solamente nmeros.
Procesamiento de listas, es decir, representacin de los datos como estructuras de
listas encadenadas en la mquina y como listas multinivel sobre el papel.
Desventajas.
En LISP la recursin se emplea a menudo como estructura de control, lo que resta
eficiencia alas ejecuciones.
Se basa en un principio de computacin que es muy diferente de la arquitectura Von
Newmann y no podra ejecutarse eficientemente en las mquinas existentes.
Aplicaciones.
LISP fue creado originalmente como una notacin matemtica prctica para los
programas de computadora, basada en el clculo lambda de Alonzo Church. Se convirti
rpidamente en el lenguaje de programacin favorito en la investigacin de la inteligencia
artificial (AI). 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.
LISP fue pionero en muchas ideas de la ciencias de la computacin usadas hoy en
da, incluyendo las estructuras de datos de rbol, el manejo de almacenamiento automtico,
tipos dinmicos, y el compilador auto contenido.
LISP ha cambiado mucho desde sus comienzos, y han existido un nmero de dialectos
en su historia, siendo los dos que imperan hoy en da el Common Lisp y el Scheme.
LISP adems, ha influenciado a muchos lenguajes de programacin, de los que
podemos destacar los cuatro ms conocidos, como son Smalltalk, CLOS, Dylan y Perl.
Ejemplos.
Escribir la funcin que divida una lista en 2 partes iguales y retorne una lista con las 2
nuevas sublistas (Si la cantidad de elementos es impar la primera sublista deber tener un
elemento ms).
(defun dividir-lista(list)
(let ((aux1 nil)
(aux2 nil))
(dotimes (i (length list))
(when (<= (+ i 1) (/ (length list) 2))
(push (nth i list) aux1))
(when (> (+ i 1) (/ (length list) 2))
(push (nth i list) aux2)))
(list (reverse aux1) (reverse aux2))))
Escribir la funcion rotar que rota los elementos de una lista hacia la derecha o hacia la
izquierda.
(defun rotar-derecha (lista)
(append (last lista) (reverse (rest (reverse lista)))))
(defun rotar-izquierda (lista)
(append (rest lista) (list (car lista))))
Escribir la funcin calcula-cuadrados que recibe una lista de numeros y devuelve otra lista
con el cuadrado de cada elemento.
(defun calcula-cuadrados (lista)
(mapcar #(lambda(x) (* x x)) lista)
REFERENCIAS
http://www.davidam.com/docu/lisp/lisp1.pdf
http://www.scribd.com/doc/53712048/Lisp
http://arantxa.ii.uam.es/~fdiez/docencia/material/lisp0.pdf
http://www.eui.upm.es/museo_virtual/3g/lisp
http://scalab.uc3m.es/~sjimenez/cursos/ejerciciosLisp.pdf