programacion lisp
TRANSCRIPT
-
7/28/2019 Programacion Lisp
1/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Programacion basica en Lisp
Pedro J. MoralesDigital Audio & Computer Music Laboratory. UCLM
July 29, 2007
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
2/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
1 Objetivos
2 Historia de Lisp
3 Programacion
4 Resumen
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
3/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Objetivos
Aproximacion historica.
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
4/215
C id
-
7/28/2019 Programacion Lisp
5/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
1960. John McCarthy publica un estudio crucial para la
programacion.
PJM Programacion basica en Lisp
C t id
http://find/ -
7/28/2019 Programacion Lisp
6/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
1960. John McCarthy publica un estudio crucial para la
programacion.Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.
PJM Programacion basica en Lisp
Contenidos
http://find/http://goback/ -
7/28/2019 Programacion Lisp
7/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
1960. John McCarthy publica un estudio crucial para laprogramacion.
Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.
Llamo al lenguaje LISP, por List Processing
PJM Programacion basica en Lisp
Contenidos
http://find/http://goback/ -
7/28/2019 Programacion Lisp
8/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
1960. John McCarthy publica un estudio crucial para laprogramacion.
Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.
Llamo al lenguaje LISP, por List Processing
Usaba la lista como estructura para representar tanto datoscomo programas.
PJM Programacion basica en Lisp
Contenidos
http://find/ -
7/28/2019 Programacion Lisp
9/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
El descubrimiento de McCarthy es un hito en la historia de laprogramacion...
PJM Programacion basica en Lisp
Contenidos
http://find/http://goback/ -
7/28/2019 Programacion Lisp
10/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Aproximacion historica
El descubrimiento de McCarthy es un hito en la historia de laprogramacion...
. . . tambien es un modelo que marca la tendencia de loslenguajes actuales.
PJM Programacion basica en Lisp
Contenidos
http://find/ -
7/28/2019 Programacion Lisp
11/215
ObjetivosHistoria de Lisp
ProgramacionResumen
Aproximacion historica
El descubrimiento de McCarthy es un hito en la historia de laprogramacion...
. . . tambien es un modelo que marca la tendencia de loslenguajes actuales.
Hay dos modelos: C y Lisp
PJM Programacion basica en Lisp
Contenidos
http://find/http://goback/ -
7/28/2019 Programacion Lisp
12/215
ObjetivosHistoria de Lisp
ProgramacionResumen
Aproximacion historica
El descubrimiento de McCarthy es un hito en la historia de laprogramacion...
. . . tambien es un modelo que marca la tendencia de loslenguajes actuales.
Hay dos modelos: C y Lisp
Los lenguajes disenados en los ultimos 20 anos se basan en elmodelo de C al que anaden partes de Lisp.
PJM Programacion basica en Lisp
Contenidos
http://find/ -
7/28/2019 Programacion Lisp
13/215
ObjetivosHistoria de Lisp
ProgramacionResumen
Lisp es un lenguaje configurable
Lisp es el lenguaje mas antiguo que se mantiene activo.
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
14/215
ContenidosObj ti
-
7/28/2019 Programacion Lisp
15/215
ObjetivosHistoria de Lisp
ProgramacionResumen
Lisp es un lenguaje configurable
Lisp es el lenguaje mas antiguo que se mantiene activo.Lisp se puede programar en Lisp.
Lisp se adapta a cualquier paradigma de programacion.
PJM Programacion basica en Lisp
http://find/http://goback/ -
7/28/2019 Programacion Lisp
16/215
-
7/28/2019 Programacion Lisp
17/215
-
7/28/2019 Programacion Lisp
18/215
-
7/28/2019 Programacion Lisp
19/215
ContenidosObjetivos
-
7/28/2019 Programacion Lisp
20/215
Objet osHistoria de Lisp
ProgramacionResumen
Aplicaciones
Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas
Scheme
PJM Programacion basica en Lisp
http://find/http://goback/ -
7/28/2019 Programacion Lisp
21/215
-
7/28/2019 Programacion Lisp
22/215
-
7/28/2019 Programacion Lisp
23/215
-
7/28/2019 Programacion Lisp
24/215
-
7/28/2019 Programacion Lisp
25/215
-
7/28/2019 Programacion Lisp
26/215
-
7/28/2019 Programacion Lisp
27/215
ContenidosObjetivos
Historia de Lisp
-
7/28/2019 Programacion Lisp
28/215
Historia de LispProgramacion
Resumen
Expresiones en Lisp
Expresiones
Lisp evalua expresiones.
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
http://find/ -
7/28/2019 Programacion Lisp
29/215
Historia de LispProgramacion
Resumen
Expresiones en Lisp
Expresiones
Lisp evalua expresiones.
Una expresion es:
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
http://find/ -
7/28/2019 Programacion Lisp
30/215
pProgramacion
Resumen
Expresiones en Lisp
Expresiones
Lisp evalua expresiones.
Una expresion es:
Un atomo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
http://find/http://goback/ -
7/28/2019 Programacion Lisp
31/215
pProgramacion
Resumen
Expresiones en Lisp
Expresiones
Lisp evalua expresiones.
Una expresion es:
Un atomoUna lista.
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
32/215
ContenidosObjetivos
Historia de LispP i
-
7/28/2019 Programacion Lisp
33/215
ProgramacionResumen
Tipos basicos de datos
Atomos
Numericos: 7, 12.0, 3.1415
Listas
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispP i
http://find/ -
7/28/2019 Programacion Lisp
34/215
ProgramacionResumen
Tipos basicos de datos
Atomos
Numericos: 7, 12.0, 3.1415
Smbolo: Secuencia de caracteres alfanumericos
Listas
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
35/215
ContenidosObjetivosHistoria de Lisp
Programacion
-
7/28/2019 Programacion Lisp
36/215
ProgramacionResumen
Tipos basicos de datos
Atomos
Numericos: 7, 12.0, 3.1415
Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,
mesa
Listas
Se escriben entre parentesis.
PJM Programacion basica en Lisp
ContenidosObjetivosHistoria de Lisp
Programacion
http://find/ -
7/28/2019 Programacion Lisp
37/215
ProgramacionResumen
Tipos basicos de datos
Atomos
Numericos: 7, 12.0, 3.1415
Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,
mesa
Listas
Se escriben entre parentesis.
Contienen un conjunto de elementos ordenados:
(2 45 27), (nota c4)
PJM Programacion basica en Lisp
ContenidosObjetivosHistoria de Lisp
Programacion
http://find/ -
7/28/2019 Programacion Lisp
38/215
ProgramacionResumen
Tipos basicos de datos
Atomos
Numericos: 7, 12.0, 3.1415
Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,
mesa
Listas
Se escriben entre parentesis.
Contienen un conjunto de elementos ordenados:
(2 45 27), (nota c4)
Puede estar vaca: ()
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
39/215
ContenidosObjetivosHistoria de Lisp
Programacion
-
7/28/2019 Programacion Lisp
40/215
gResumen
Bucle WAIT-READ-EVAL-PRINT
WAIT Lisp muestra el prompt y espera >
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
41/215
-
7/28/2019 Programacion Lisp
42/215
-
7/28/2019 Programacion Lisp
43/215
ContenidosObjetivosHistoria de Lisp
ProgramacionR
-
7/28/2019 Programacion Lisp
44/215
Resumen
Evaluacion de atomos
Numericos: Devuelven su valor.
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
45/215
-
7/28/2019 Programacion Lisp
46/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
-
7/28/2019 Programacion Lisp
47/215
Resumen
Evaluacion de atomos
Numericos: Devuelven su valor.
Simbolicos: Si el nombre comienza por : devuelve el mismonombre.
Si tiene ligado un valor devuelve ese valor.
Si no tiene valor ligado, devuelve un error.
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
http://find/ -
7/28/2019 Programacion Lisp
48/215
Resumen
Ejemplos
> 5.6
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
http://find/ -
7/28/2019 Programacion Lisp
49/215
Ejemplos
> 5.6
5.6
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
http://find/ -
7/28/2019 Programacion Lisp
50/215
Ejemplos
> 5.6
5.6
> :zx
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
51/215
-
7/28/2019 Programacion Lisp
52/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
-
7/28/2019 Programacion Lisp
53/215
Ejemplos
> 5.6
5.6
> :zx:ZX
> dfg
error: unbound variable - DFG
if continued: try evaluating symbol again
1>
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
http://find/ -
7/28/2019 Programacion Lisp
54/215
Expresiones matematicas
Se utiliza la notacion prefija.
4 + 3
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
55/215
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
-
7/28/2019 Programacion Lisp
56/215
Expresiones matematicas
Se utiliza la notacion prefija.
4 + 3 -> (+ 4 3)4 + 3 ( 7 - 6 )
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
57/215
-
7/28/2019 Programacion Lisp
58/215
-
7/28/2019 Programacion Lisp
59/215
-
7/28/2019 Programacion Lisp
60/215
-
7/28/2019 Programacion Lisp
61/215
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
O d l d l i
-
7/28/2019 Programacion Lisp
62/215
Orden normal de evaluacion
La evaluacion empieza por las listas mas internas de la expresion.
(+ (* 3 (- 7 6)) 4)
(+ (* 3 1) 4)
(+ (* 3 1) 4)
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
O d l d l i
http://find/http://goback/ -
7/28/2019 Programacion Lisp
63/215
Orden normal de evaluacion
La evaluacion empieza por las listas mas internas de la expresion.
(+ (* 3 (- 7 6)) 4)
(+ (* 3 1) 4)
(+ (* 3 1) 4)
(+ 3 4)
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
64/215
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
O d l d l i
-
7/28/2019 Programacion Lisp
65/215
Orden normal de evaluacion
La evaluacion empieza por las listas mas internas de la expresion.
(+ (* 3 (- 7 6)) 4)
(+ (* 3 1) 4)(+ (* 3 1) 4)
(+ 3 4)
(+ 3 4)
7
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
66/215
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Evaluacion n de funciones
-
7/28/2019 Programacion Lisp
67/215
Evaluacion n de funciones
El primer elemento de la lista es una funcion
Se evalua el resto de los elementos.
Se aplican como argumentos a la funcion.
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Evaluacion de formas especiales
http://find/http://goback/ -
7/28/2019 Programacion Lisp
68/215
Evaluacion de formas especiales
Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.
> (setq x (- 2 3))
PJM Programacion basica en Lisp
http://find/http://goback/ -
7/28/2019 Programacion Lisp
69/215
-
7/28/2019 Programacion Lisp
70/215
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Evaluacion de formas especiales
-
7/28/2019 Programacion Lisp
71/215
Evaluacion de formas especiales
Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.
> (setq x (- 2 3))
; se evalua el segundo argumento; se asigna el valor del segundo argumento
; al simbolo (que es el primer argumento)
> -1 ; resultado
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Evaluacion de formas especiales
http://find/ -
7/28/2019 Programacion Lisp
72/215
Evaluacion de formas especiales
Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.
> (setq x (- 2 3))
; se evalua el segundo argumento; se asigna el valor del segundo argumento
; al simbolo (que es el primer argumento)
> -1 ; resultado
> x ; el valor asignado a x es
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Evaluacion de formas especiales
http://find/ -
7/28/2019 Programacion Lisp
73/215
Evaluacion de formas especiales
Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.
> (setq x (- 2 3))
; se evalua el segundo argumento; se asigna el valor del segundo argumento
; al simbolo (que es el primer argumento)
> -1 ; resultado
> x ; el valor asignado a x es
> -1>
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
74/215
-
7/28/2019 Programacion Lisp
75/215
-
7/28/2019 Programacion Lisp
76/215
Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. SETQ
-
7/28/2019 Programacion Lisp
77/215
Q
SETQ
Liga un valor a un smbolo.
(setq smbolo valor)
Ejemplos
> (setq x 25)
> (setq do-central :c4)
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. LET
http://find/ -
7/28/2019 Programacion Lisp
78/215
LET
Liga valores locales a uno, varios o ningun smbolo.
Ejemplos
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. LET
http://find/ -
7/28/2019 Programacion Lisp
79/215
LET
Liga valores locales a uno, varios o ningun smbolo.
(let (ligaduras) expresiones)
Ejemplos
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
80/215
-
7/28/2019 Programacion Lisp
81/215
Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. LET
-
7/28/2019 Programacion Lisp
82/215
LET
Liga valores locales a uno, varios o ningun smbolo.
(let (ligaduras) expresiones)
Ejemplos
> (let ((a 2) (b 3) (c 4)) (+ a (* 2 b) (/ c 2)))
10
> a
PJM Programacion basica en Lisp
Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. LET
http://find/ -
7/28/2019 Programacion Lisp
83/215
LET
Liga valores locales a uno, varios o ningun smbolo.
(let (ligaduras) expresiones)
Ejemplos
> (let ((a 2) (b 3) (c 4)) (+ a (* 2 b) (/ c 2)))
10
> aerror: unbound variable - A
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. COND
http://find/ -
7/28/2019 Programacion Lisp
84/215
COND
Evalua expresiones de manera condicional.
Ejemplos
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. COND
http://find/ -
7/28/2019 Programacion Lisp
85/215
COND
Evalua expresiones de manera condicional.
(cond (expresion-logica expresiones*)*)
Ejemplos
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de LispProgramacion
Resumen
Referencia basica. COND
http://find/ -
7/28/2019 Programacion Lisp
86/215
COND
Evalua expresiones de manera condicional.
(cond (expresion-logica expresiones*)*)
Ejemplos
> (let ((a 1) (b 2) (c 1) (d 1))
(cond ((eql a b) 1)
((eql a c) "Primera expresion" 2)
((eql a d) 3)))
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. COND
http://find/http://goback/ -
7/28/2019 Programacion Lisp
87/215
COND
Evalua expresiones de manera condicional.
(cond (expresion-logica expresiones*)*)
Ejemplos
> (let ((a 1) (b 2) (c 1) (d 1))
(cond ((eql a b) 1)
((eql a c) "Primera expresion" 2)
((eql a d) 3)))
2
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/http://goback/ -
7/28/2019 Programacion Lisp
88/215
QUOTEBloquea la evaluacion.
Ejemplos
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/http://goback/ -
7/28/2019 Programacion Lisp
89/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Ejemplos
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
90/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://goforward/http://find/http://goback/ -
7/28/2019 Programacion Lisp
91/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
92/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
a
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
93/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
a
> (setq a (quote b))
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
94/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
a
> (setq a (quote b))
b
PJM Programacion basica en Lisp Contenidos
ObjetivosHistoria de Lisp
ProgramacionResumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
95/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
a
> (setq a (quote b))
b
> a
PJM Programacion basica en Lisp Contenidos
Objetivos
Historia de LispProgramacion
Resumen
Referencia basica. QUOTE
http://find/ -
7/28/2019 Programacion Lisp
96/215
QUOTEBloquea la evaluacion.
(quote smbolo) devuelve smbolo
Notacion equivalente: smbolo
Ejemplos
> (quote a)
a
> (setq a (quote b))
b
> a
b
PJM Programacion basica en Lisp Contenidos
Objetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
97/215
CONS
Constructor de un par ordenado. Puede construir listas.
Ejemplos
PJM Programacion basica en Lisp Contenidos
Objetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
98/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
PJM Programacion basica en Lisp Contenidos
Objetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
99/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
100/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
(a . b)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://goforward/http://find/http://goback/ -
7/28/2019 Programacion Lisp
101/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
(a . b)
> (cons a ())
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
102/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
(a . b)
> (cons a ())
(a)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
103/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
(a . b)
> (cons a ())
(a)> (cons a (cons b ()))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. CONS
http://find/ -
7/28/2019 Programacion Lisp
104/215
CONS
Constructor de un par ordenado. Puede construir listas.
(cons primer-elemento segundo-elemento)
Ejemplos
> (cons a b)
(a . b)
> (cons a ())
(a)> (cons a (cons b ()))
(a b)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://find/ -
7/28/2019 Programacion Lisp
105/215
LIST
Construye listas de forma mas sencilla que CONS.
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://find/ -
7/28/2019 Programacion Lisp
106/215
LIST
Construye listas de forma mas sencilla que CONS.
(list elemento-1 elemento-2 elemento-3 . . . )
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://find/ -
7/28/2019 Programacion Lisp
107/215
LIST
Construye listas de forma mas sencilla que CONS.
(list elemento-1 elemento-2 elemento-3 . . . )
Ejemplos
> (list 1 2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://goforward/http://find/http://goback/ -
7/28/2019 Programacion Lisp
108/215
LIST
Construye listas de forma mas sencilla que CONS.
(list elemento-1 elemento-2 elemento-3 . . . )
Ejemplos
> (list 1 2 3)
(1 2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://find/ -
7/28/2019 Programacion Lisp
109/215
LIST
Construye listas de forma mas sencilla que CONS.
(list elemento-1 elemento-2 elemento-3 . . . )
Ejemplos
> (list 1 2 3)
(1 2 3)
> (list 1 a :hola cadena)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LIST
http://find/ -
7/28/2019 Programacion Lisp
110/215
LIST
Construye listas de forma mas sencilla que CONS.
(list elemento-1 elemento-2 elemento-3 . . . )
Ejemplos
> (list 1 2 3)
(1 2 3)
> (list 1 a :hola cadena)
(1 a :hola cadena)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
111/215
APPEND
Concatena listas.
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
112/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
113/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
114/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
115/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (setq lista-2 (list 1 a :hola cadena))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
116/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (setq lista-2 (list 1 a :hola cadena))
(1 a :hola cadena)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
117/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (setq lista-2 (list 1 a :hola cadena))
(1 a :hola cadena)
> (append lista-1 lista-2)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. APPEND
http://find/ -
7/28/2019 Programacion Lisp
118/215
APPEND
Concatena listas.
(append lista-1 lista-2 lista-3 . . . )
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (setq lista-2 (list 1 a :hola cadena))
(1 a :hola cadena)
> (append lista-1 lista-2)
(1 2 3 1 a :hola cadena)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
http://find/ -
7/28/2019 Programacion Lisp
119/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
http://find/ -
7/28/2019 Programacion Lisp
120/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
http://find/ -
7/28/2019 Programacion Lisp
121/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
http://find/ -
7/28/2019 Programacion Lisp
122/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
http://find/ -
7/28/2019 Programacion Lisp
123/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (first lista-1)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
S C
http://find/ -
7/28/2019 Programacion Lisp
124/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (first lista-1)
1
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
FIRST E i l CAR
http://find/ -
7/28/2019 Programacion Lisp
125/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (first lista-1)
1
> (first (cons 5 7))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. FIRST
FIRST E i l CAR
http://find/ -
7/28/2019 Programacion Lisp
126/215
FIRST. Equivalente a CAR.
Selecciona el primer elemento de un par ordenado (o lista).
(first lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (first lista-1)
1
> (first (cons 5 7))
5
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacionResumen
Referencia basica. REST
REST. Equivalente a CDR.
S l l d l d d d ( l l
http://goforward/http://find/http://goback/ -
7/28/2019 Programacion Lisp
127/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
S l i l d l d d d ( l li
http://find/ -
7/28/2019 Programacion Lisp
128/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
S l i l d l t d d d ( l li t
http://find/ -
7/28/2019 Programacion Lisp
129/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
S l i l d l t d d d ( l li t
http://find/ -
7/28/2019 Programacion Lisp
130/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
131/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
132/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
(2 3)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
133/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
(2 3)
> (rest (cons 5 7))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
134/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
(2 3)
> (rest (cons 5 7))
7
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
135/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
(2 3)
> (rest (cons 5 7))
7
> (first (rest lista-1))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. REST
REST. Equivalente a CDR.
Selecciona el segundo elemento de un par ordenado (o la lista
http://find/ -
7/28/2019 Programacion Lisp
136/215
Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).
(rest lista)
Ejemplos> (setq lista-1 (list 1 2 3))
(1 2 3)
> (rest lista-1)
(2 3)
> (rest (cons 5 7))
7
> (first (rest lista-1))
2PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
http://find/ -
7/28/2019 Programacion Lisp
137/215
EQ.Detecta si el valor de un smbolo es identico a otro.
Ejemplos
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
138/215
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
-
7/28/2019 Programacion Lisp
139/215
QDetecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
140/215
QDetecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
T
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
http://find/ -
7/28/2019 Programacion Lisp
141/215
QDetecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
T
> (eq a b)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
http://find/ -
7/28/2019 Programacion Lisp
142/215
Detecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
T
> (eq a b)
NIL
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.
http://find/ -
7/28/2019 Programacion Lisp
143/215
Detecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
T
> (eq a b)
NIL
> (eq (list 1 2 3) (list 1 2 3))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. EQ
EQ.D l l d b l d
http://find/http://goback/ -
7/28/2019 Programacion Lisp
144/215
Detecta si el valor de un smbolo es identico a otro.
(eq smbolo-1 smbolo-2)
Ejemplos> (eq a a)
T
> (eq a b)
NIL
> (eq (list 1 2 3) (list 1 2 3))
NIL
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. DEFUN
DEFUN.
Sirve para definir una funcion de usuario y ligarla a un
http://find/ -
7/28/2019 Programacion Lisp
145/215
smbolo.
Ejemplo: Calculo de la hipotenusa
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. DEFUN
DEFUN.
Sirve para definir una funcion de usuario y ligarla a un b l
http://find/ -
7/28/2019 Programacion Lisp
146/215
smbolo.
(defun nombre-funcion lista-de-argumentos cuerpo)
Ejemplo: Calculo de la hipotenusa
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. DEFUN
DEFUN.
Sirve para definir una funcion de usuario y ligarla a un b l
http://find/ -
7/28/2019 Programacion Lisp
147/215
smbolo.
(defun nombre-funcion lista-de-argumentos cuerpo)
Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)
(sqrt (+ (expt a 2.0) (expt b 2.0))))
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. DEFUN
DEFUN.
Sirve para definir una funcion de usuario y ligarla a un b l
http://find/ -
7/28/2019 Programacion Lisp
148/215
smbolo.
(defun nombre-funcion lista-de-argumentos cuerpo)
Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)
(sqrt (+ (expt a 2.0) (expt b 2.0))))
Ejemplos
> (pitagoras 3 4)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. DEFUN
DEFUN.
Sirve para definir una funcion de usuario y ligarla a uns b l
http://find/http://goback/ -
7/28/2019 Programacion Lisp
149/215
smbolo.
(defun nombre-funcion lista-de-argumentos cuerpo)
Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)
(sqrt (+ (expt a 2.0) (expt b 2.0))))
Ejemplos
> (pitagoras 3 4)
5
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.( d d d 2 )
http://find/ -
7/28/2019 Programacion Lisp
150/215
> (setq identidad 25)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> ( t id tid d 25)
http://find/ -
7/28/2019 Programacion Lisp
151/215
> (setq identidad 25)
25
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> ( t id tid d 25)
http://find/ -
7/28/2019 Programacion Lisp
152/215
> (setq identidad 25)
25
> (defun identidad (a) a)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
http://find/ -
7/28/2019 Programacion Lisp
153/215
> (setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
http://find/ -
7/28/2019 Programacion Lisp
154/215
> (setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
> identidad
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
http://find/ -
7/28/2019 Programacion Lisp
155/215
> (setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
> identidad
25
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
http://find/ -
7/28/2019 Programacion Lisp
156/215
> (setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
> identidad
25
> (function identidad)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
http://find/ -
7/28/2019 Programacion Lisp
157/215
> (setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
> identidad
25
> (function identidad)
#
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
158/215
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica.
Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)
-
7/28/2019 Programacion Lisp
159/215
(setq identidad 25)
25
> (defun identidad (a) a)
IDENTIDAD
> identidad
25
> (function identidad)
#
> #identidad#
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. LAMBDA
LAMBDA
http://find/ -
7/28/2019 Programacion Lisp
160/215
LAMBDA.
Devuelve una funcion sin nombre (sin ligarla a un smbolo).
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. LAMBDA
LAMBDA
http://find/ -
7/28/2019 Programacion Lisp
161/215
LAMBDA.
Devuelve una funcion sin nombre (sin ligarla a un smbolo).
(lambda lista-de-argumentos cuerpo)
Ejemplos
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
162/215
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. LAMBDA
LAMBDA.
-
7/28/2019 Programacion Lisp
163/215
LAMBDA.
Devuelve una funcion sin nombre (sin ligarla a un smbolo).
(lambda lista-de-argumentos cuerpo)
Ejemplos
> ((lambda (a b) (+ a b)) 3 4)
7
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
http://find/ -
7/28/2019 Programacion Lisp
164/215
Ejemplos
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
165/215
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
Funciona como una plantilla donde solo se evaluan las
-
7/28/2019 Programacion Lisp
166/215
Funciona como una plantilla donde solo se evaluan lasexpresiones precedidas por una coma.
(backquote plantilla)
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de Lisp
ProgramacionResumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
Funciona como una plantilla donde solo se evaluan las
http://find/ -
7/28/2019 Programacion Lisp
167/215
Funciona como una plantilla donde solo se evaluan lasexpresiones precedidas por una coma.
(backquote plantilla)
plantilla
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
Funciona como una plantilla donde solo se evaluan las
http://find/ -
7/28/2019 Programacion Lisp
168/215
pexpresiones precedidas por una coma.
(backquote plantilla)
plantilla
Ejemplos
> (a b pi c)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
Funciona como una plantilla donde solo se evaluan las
http://find/ -
7/28/2019 Programacion Lisp
169/215
pexpresiones precedidas por una coma.
(backquote plantilla)
plantilla
Ejemplos
> (a b pi c)
(a b pi c)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. BACKQUOTE
BACKQUOTE. Abreviatura:
Al aplicarlo a una lista realiza una evaluacion selectiva.
Funciona como una plantilla donde solo se evaluan las
http://find/ -
7/28/2019 Programacion Lisp
170/215
pexpresiones precedidas por una coma.
(backquote plantilla)
plantilla
Ejemplos
> (a b pi c)
(a b pi c)> (a b ,pi c)
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
171/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.
-
7/28/2019 Programacion Lisp
172/215
Ejemplo
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
173/215
Ejemplo
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
174/215
Ejemplo
(defmacro mi-setq (plaza valor)(setq ,plaza ,valor))
Ejemplos
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
175/215
Ejemplo
(defmacro mi-setq (plaza valor)(setq ,plaza ,valor))
Ejemplos
> (mi-setq a b)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
176/215
Ejemplo
(defmacro mi-setq (plaza valor)(setq ,plaza ,valor))
Ejemplos
> (mi-setq a b)B
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
177/215
Ejemplo
(defmacro mi-setq (plaza valor)(setq ,plaza ,valor))
Ejemplos
> (mi-setq a b)B
> a
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. DEFMACRO
DEFMACRO.
Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)
http://find/ -
7/28/2019 Programacion Lisp
178/215
Ejemplo
(defmacro mi-setq (plaza valor)(setq ,plaza ,valor))
Ejemplos
> (mi-setq a b)B
> a
BPJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
http://find/ -
7/28/2019 Programacion Lisp
179/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
180/215
Creacion: (make array tamano)
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
181/215
C ( y )
Acceso: (aref array n)
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
182/215
( y )
Acceso: (aref array n)
Ejemplo
> (setq mi-array (make-array 4))
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
183/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
-
7/28/2019 Programacion Lisp
184/215
( )
Acceso: (aref array n)
Ejemplo
> (setq mi-array (make-array 4))
#(NIL NIL NIL NIL)
> (setf (aref mi-array 2) 3.14)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
185/215
Acceso: (aref array n)
Ejemplo
> (setq mi-array (make-array 4))
#(NIL NIL NIL NIL)
> (setf (aref mi-array 2) 3.14)
3.14
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
186/215
Acceso: (aref array n)
Ejemplo
> (setq mi-array (make-array 4))
#(NIL NIL NIL NIL)
> (setf (aref mi-array 2) 3.14)
3.14> mi-array
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Array
Coleccion de datos a los que se accede mediante un ndicenumerico.
Creacion: (make-array tamano)
http://find/ -
7/28/2019 Programacion Lisp
187/215
Acceso: (aref array n)
Ejemplo
> (setq mi-array (make-array 4))
#(NIL NIL NIL NIL)
> (setf (aref mi-array 2) 3.14)
3.14> mi-array
#(NIL NIL 3.14 NIL)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
http://find/ -
7/28/2019 Programacion Lisp
188/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/ -
7/28/2019 Programacion Lisp
189/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/ -
7/28/2019 Programacion Lisp
190/215
Ejemplo
> mi-cadena
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/ -
7/28/2019 Programacion Lisp
191/215
Ejemplo
> mi-cadenami-cadena
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
192/215
Ejemplo
> mi-cadenami-cadena
> (setq mi-string mi-cadena-2)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
193/215
Ejemplo
> mi-cadenami-cadena
> (setq mi-string mi-cadena-2)
mi-cadena-2
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
194/215
Ejemplo
> mi-cadenami-cadena
> (setq mi-string mi-cadena-2)
mi-cadena-2
> mi-string
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Otros tipos de datos
Strings
Secuencia de caracteres alfanumericos.
Se autoevaluan.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
195/215
Ejemplo
> mi-cadenami-cadena
> (setq mi-string mi-cadena-2)
mi-cadena-2
> mi-string
mi-cadena-2
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
http://find/http://goback/ -
7/28/2019 Programacion Lisp
196/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
(read)
http://find/http://goback/ -
7/28/2019 Programacion Lisp
197/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
(read)
http://find/http://goback/ -
7/28/2019 Programacion Lisp
198/215
Ejemplo> (setq a (read))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
(read)
http://find/http://goback/ -
7/28/2019 Programacion Lisp
199/215
Ejemplo> (setq a (read))
56
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
(read)
http://find/http://goback/ -
7/28/2019 Programacion Lisp
200/215
Ejemplo> (setq a (read))
56
56
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Entrada
READ
READ convierte los caracteres de entrada en expresiones deLisp.
(read)
http://find/http://goback/ -
7/28/2019 Programacion Lisp
201/215
Ejemplo> (setq a (read))
56
56
> a
PJM Programacion basica en Lisp
http://find/http://goback/ -
7/28/2019 Programacion Lisp
202/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Salida
PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.
-
7/28/2019 Programacion Lisp
203/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Salida
PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.
( i t i )
http://find/ -
7/28/2019 Programacion Lisp
204/215
(print expresion)
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Salida
PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.
( i t i )
http://find/http://goback/ -
7/28/2019 Programacion Lisp
205/215
(print expresion)
Ejemplo
> (print (list 1 2 3))
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Salida
PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.
(print expresion)
http://find/ -
7/28/2019 Programacion Lisp
206/215
(print expresion)
Ejemplo
> (print (list 1 2 3))
(1 2 3); lo que imprime en la consola
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. Salida
PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.
(print expresion)
http://find/ -
7/28/2019 Programacion Lisp
207/215
(print expresion)
Ejemplo
> (print (list 1 2 3))
(1 2 3); lo que imprime en la consola
(1 2 3); lo que devuelve
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LOAD
LOAD
Carga el codigo fuente contenido en un archivo.
http://goforward/http://find/http://goback/ -
7/28/2019 Programacion Lisp
208/215
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LOAD
LOAD
Carga el codigo fuente contenido en un archivo.
(load path-y-nombre-archivo) ; asume la extension .lsp
http://find/ -
7/28/2019 Programacion Lisp
209/215
(load path y nombre archivo) ; asume la extension .lsp
Ejemplo
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LOAD
LOAD
Carga el codigo fuente contenido en un archivo.
(load path-y-nombre-archivo) ; asume la extension .lsp
http://find/ -
7/28/2019 Programacion Lisp
210/215
( p y ) ; p
Ejemplo
> (load mifichero)
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Referencia basica. LOAD
LOAD
Carga el codigo fuente contenido en un archivo.
(load path-y-nombre-archivo) ; asume la extension .lsp
http://find/ -
7/28/2019 Programacion Lisp
211/215
( p y ) ; p
Ejemplo
> (load mifichero)
T ; T si lo carga, NIL si no lo carga
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Resumen
Se han mostrado los elementos basicos de Lisp, pero . . .
http://find/ -
7/28/2019 Programacion Lisp
212/215
PJM Programacion basica en Lisp
ContenidosObjetivos
Historia de LispProgramacion
Resumen
Resumen
Se han mostrado los elementos basicos de Lisp, pero . . .
Para realizar proyectos mas extensos hay que conocer las
http://find/ -
7/28/2019 Programacion Lisp
213/215
Para realizar proyectos mas extensos hay que conocer las
estrategias de programacion.
PJM Programacion basica en Lisp
http://find/ -
7/28/2019 Programacion Lisp
214/215
ContenidosObjetivos
Historia de LispProgramacion
Resumen
[Dannenberg, 2007] Roger B. Dannenberg.Nyquist Reference Manual, Version 2.33Carnegie Mellon University, 2007.
[Touretzky, 1990] David Touretzky.Common Lisp: A Gentle Introduction to SymbolicComputation.Carnegie Mellon University, 1990.
-
7/28/2019 Programacion Lisp
215/215
http://www.cs.cmu.edu/~dst/LispBook
[Steele, 1990] Guy L. Steele Jr.Common Lisp the Language, 2nd editionDigital Press, 1990.http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2
PJM Programacion basica en Lisp
http://find/