Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf ·...

215
Contenidos Objetivos Historia de Lisp Programaci´ on Resumen Programaci´ on b´ asica en Lisp Pedro J. Morales Digital Audio & Computer Music Laboratory. UCLM July 29, 2007 PJM Programaci´ on b´ asica en Lisp

Transcript of Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf ·...

Page 1: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Page 2: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

1 Objetivos

2 Historia de Lisp

3 Programacion

4 Resumen

PJM Programacion basica en Lisp

Page 3: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Objetivos

Aproximacion historica.

Programacion basica.

PJM Programacion basica en Lisp

Page 4: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Objetivos

Aproximacion historica.

Programacion basica.

PJM Programacion basica en Lisp

Page 5: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Page 6: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Page 7: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Page 8: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Page 9: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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.

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

Page 10: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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.

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

Page 11: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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.

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

Page 12: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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.

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

Page 13: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 14: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 15: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 16: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Lisp en la actualidad

Hay diversas variantes que se han decantado en dos dialectos.

Common Lisp es la variante maximalista.

Scheme es minimalista.

PJM Programacion basica en Lisp

Page 17: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Lisp en la actualidad

Hay diversas variantes que se han decantado en dos dialectos.

Common Lisp es la variante maximalista.

Scheme es minimalista.

PJM Programacion basica en Lisp

Page 18: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Lisp en la actualidad

Hay diversas variantes que se han decantado en dos dialectos.

Common Lisp es la variante maximalista.

Scheme es minimalista.

PJM Programacion basica en Lisp

Page 19: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 20: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

Scheme

Subconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 21: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 22: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 23: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.

GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 24: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.

Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 25: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).

LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 26: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.

AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 27: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Aplicaciones

Ademas de las implementaciones de Lisp como lenguaje, lasversiones mas pequenas

SchemeSubconjuntos de Common Lisp: XLisp, elisp.

Se empotran en aplicaciones especıficas como lenguajes descripts

Emacs, editor de texto, elisp.GIMP, editor de graficos, Scheme.Audacity, editor de audio, Nyquist (XLisp).LilyPond, partituras musicales, Scheme.AutoCAD, diseno tecnico, AutoLisp (XLisp).

PJM Programacion basica en Lisp

Page 28: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones en Lisp

Expresiones

Lisp evalua expresiones.

Una expresion es:

Un atomoUna lista.

PJM Programacion basica en Lisp

Page 29: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones en Lisp

Expresiones

Lisp evalua expresiones.

Una expresion es:

Un atomoUna lista.

PJM Programacion basica en Lisp

Page 30: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones en Lisp

Expresiones

Lisp evalua expresiones.

Una expresion es:

Un atomo

Una lista.

PJM Programacion basica en Lisp

Page 31: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones en Lisp

Expresiones

Lisp evalua expresiones.

Una expresion es:

Un atomoUna lista.

PJM Programacion basica en Lisp

Page 32: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos:

7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 33: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 34: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 35: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 36: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 37: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 38: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 39: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Tipos basicos de datos

Atomos

Numericos: 7, 12.0, 3.1415

Sımbolo: 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 vacıa: ()

O contener elementos que sean listas: (a (b c) (d (e f)))

PJM Programacion basica en Lisp

Page 40: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Bucle WAIT-READ-EVAL-PRINT

WAIT Lisp muestra el prompt y espera >

READ El usuario escribe una expresion > (+ 3 4)

EVAL Lisp evalua la expresion.

PRINT Lisp escribe el resultado > 7

PJM Programacion basica en Lisp

Page 41: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Bucle WAIT-READ-EVAL-PRINT

WAIT Lisp muestra el prompt y espera >

READ El usuario escribe una expresion > (+ 3 4)

EVAL Lisp evalua la expresion.

PRINT Lisp escribe el resultado > 7

PJM Programacion basica en Lisp

Page 42: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Bucle WAIT-READ-EVAL-PRINT

WAIT Lisp muestra el prompt y espera >

READ El usuario escribe una expresion > (+ 3 4)

EVAL Lisp evalua la expresion.

PRINT Lisp escribe el resultado > 7

PJM Programacion basica en Lisp

Page 43: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Bucle WAIT-READ-EVAL-PRINT

WAIT Lisp muestra el prompt y espera >

READ El usuario escribe una expresion > (+ 3 4)

EVAL Lisp evalua la expresion.

PRINT Lisp escribe el resultado > 7

PJM Programacion basica en Lisp

Page 44: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

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

Page 45: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

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

Page 46: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

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

Page 47: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

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

Page 48: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.6

5.6> :zx:ZX> dfgerror: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 49: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.65.6

> :zx:ZX> dfgerror: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 50: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.65.6> :zx

:ZX> dfgerror: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 51: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.65.6> :zx:ZX

> dfgerror: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 52: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.65.6> :zx:ZX> dfg

error: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 53: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Ejemplos

> 5.65.6> :zx:ZX> dfgerror: unbound variable - DFGif continued: try evaluating symbol again1>

PJM Programacion basica en Lisp

Page 54: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3

-> (+ 4 3)4 + 3 (7 - 6) -> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacionLos demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 55: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3 -> (+ 4 3)

4 + 3 (7 - 6) -> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacionLos demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 56: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3 -> (+ 4 3)4 + 3 (7 - 6)

-> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacionLos demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 57: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3 -> (+ 4 3)4 + 3 (7 - 6) -> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacionLos demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 58: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3 -> (+ 4 3)4 + 3 (7 - 6) -> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacion

Los demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 59: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Expresiones matematicas

Se utiliza la notacion prefija.

4 + 3 -> (+ 4 3)4 + 3 (7 - 6) -> (+ 4 (* 3 (- 7 6)))

El primer elemento de la lista es la operacionLos demas elementos son los operandos.

PJM Programacion basica en Lisp

Page 60: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 61: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 62: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 63: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 64: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 65: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 66: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 67: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 68: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 69: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 70: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 71: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 72: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 73: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

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

Page 74: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. SETQ

SETQ

Liga un valor a un sımbolo.

(setq sımbolo valor)

Ejemplos

> (setq x 25)> (setq do-central :c4)

PJM Programacion basica en Lisp

Page 75: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. SETQ

SETQ

Liga un valor a un sımbolo.

(setq sımbolo valor)

Ejemplos

> (setq x 25)> (setq do-central :c4)

PJM Programacion basica en Lisp

Page 76: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. SETQ

SETQ

Liga un valor a un sımbolo.

(setq sımbolo valor)

Ejemplos

> (setq x 25)

> (setq do-central :c4)

PJM Programacion basica en Lisp

Page 77: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. SETQ

SETQ

Liga un valor a un sımbolo.

(setq sımbolo valor)

Ejemplos

> (setq x 25)> (setq do-central :c4)

PJM Programacion basica en Lisp

Page 78: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(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

Page 79: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(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

Page 80: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(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

Page 81: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(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

Page 82: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(let (ligaduras) expresiones)

Ejemplos

> (let ((a 2) (b 3) (c 4)) (+ a (* 2 b) (/ c 2)))10> a

error: unbound variable - A

PJM Programacion basica en Lisp

Page 83: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LET

LET

Liga valores locales a uno, varios o ningun sımbolo.

(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

Page 84: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. COND

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

Page 85: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. COND

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

Page 86: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. COND

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

Page 87: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. COND

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

Page 88: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 89: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 90: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 91: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)

a> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 92: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a

> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 93: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))

b> ab

PJM Programacion basica en Lisp

Page 94: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b

> ab

PJM Programacion basica en Lisp

Page 95: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b> a

b

PJM Programacion basica en Lisp

Page 96: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. QUOTE

QUOTE

Bloquea la evaluacion.

(quote sımbolo) devuelve sımbolo

Notacion equivalente: ’sımbolo

Ejemplos

> (quote a)a> (setq a (quote b))b> ab

PJM Programacion basica en Lisp

Page 97: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 98: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 99: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 100: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 101: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 102: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 103: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 104: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. CONS

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

Page 105: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 106: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 107: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 108: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 109: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 110: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LIST

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

Page 111: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 112: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 113: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 114: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 115: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 116: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 117: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 118: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. APPEND

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

Page 119: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 120: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 121: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 122: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 123: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 124: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 125: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 126: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. FIRST

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

Page 127: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 128: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 129: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 130: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 131: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 132: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 133: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 134: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 135: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

2

PJM Programacion basica en Lisp

Page 136: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. REST

REST. Equivalente a CDR.

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

PJM Programacion basica en Lisp

Page 137: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 138: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 139: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 140: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 141: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 142: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 143: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 144: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. EQ

EQ.

Detecta si el valor de un sımbolo es identico a otro.

(eq sımbolo-1 sımbolo-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

Page 145: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFUN

DEFUN.

Sirve para definir una funcion de usuario y ligarla a unsımbolo.

(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

Page 146: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFUN

DEFUN.

Sirve para definir una funcion de usuario y ligarla a unsımbolo.

(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

Page 147: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFUN

DEFUN.

Sirve para definir una funcion de usuario y ligarla a unsımbolo.

(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

Page 148: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFUN

DEFUN.

Sirve para definir una funcion de usuario y ligarla a unsımbolo.

(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

Page 149: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFUN

DEFUN.

Sirve para definir una funcion de usuario y ligarla a unsımbolo.

(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

Page 150: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)

25> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 151: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25

> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 152: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)

IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 153: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD

> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 154: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad

25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 155: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad25

> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 156: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)

#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 157: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>

> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 158: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad

#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 159: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica.

Un sımbolo puede estar ligado a un valor y una funcion.

> (setq identidad 25)25> (defun identidad (a) a)IDENTIDAD> identidad25> (function identidad)#<Closure-IDENTIDAD: #82ae524>> #’identidad#<Closure-IDENTIDAD: #82ae524>

PJM Programacion basica en Lisp

Page 160: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LAMBDA

LAMBDA.

Devuelve una funcion sin nombre (sin ligarla a un sımbolo).

(lambda lista-de-argumentos cuerpo)

Ejemplos

> ((lambda (a b) (+ a b)) 3 4)7

PJM Programacion basica en Lisp

Page 161: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LAMBDA

LAMBDA.

Devuelve una funcion sin nombre (sin ligarla a un sımbolo).

(lambda lista-de-argumentos cuerpo)

Ejemplos

> ((lambda (a b) (+ a b)) 3 4)7

PJM Programacion basica en Lisp

Page 162: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LAMBDA

LAMBDA.

Devuelve una funcion sin nombre (sin ligarla a un sımbolo).

(lambda lista-de-argumentos cuerpo)

Ejemplos

> ((lambda (a b) (+ a b)) 3 4)

7

PJM Programacion basica en Lisp

Page 163: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. LAMBDA

LAMBDA.

Devuelve una funcion sin nombre (sin ligarla a un sımbolo).

(lambda lista-de-argumentos cuerpo)

Ejemplos

> ((lambda (a b) (+ a b)) 3 4)7

PJM Programacion basica en Lisp

Page 164: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 165: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 166: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 167: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 168: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)

(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 169: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)

> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 170: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)

(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 171: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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 lasexpresiones precedidas por una coma.

(backquote plantilla)

‘plantilla

Ejemplos

> ’(a b pi c)(a b pi c)> ‘(a b ,pi c)(a b 3.1416 c)

PJM Programacion basica en Lisp

Page 172: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B> aB

PJM Programacion basica en Lisp

Page 173: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B> aB

PJM Programacion basica en Lisp

Page 174: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B> aB

PJM Programacion basica en Lisp

Page 175: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)

B> aB

PJM Programacion basica en Lisp

Page 176: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B

> aB

PJM Programacion basica en Lisp

Page 177: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B> a

B

PJM Programacion basica en Lisp

Page 178: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. DEFMACRO

DEFMACRO.

Crea una expresion y despues la evalua.

(defmacro nombre-macro lista-de-argumentos cuerpo)

Ejemplo

(defmacro mi-setq (plaza valor)‘(setq ,plaza ’,valor))

Ejemplos

> (mi-setq a b)B> aB

PJM Programacion basica en Lisp

Page 179: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 180: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 181: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 182: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 183: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 184: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 185: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 186: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 187: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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)

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

Page 188: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 189: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 190: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’

‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 191: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’

> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 192: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)

‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 193: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’

> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 194: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string

‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 195: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Otros tipos de datos

Strings

Secuencia de caracteres alfanumericos.

Se autoevaluan.

Ejemplo

> ‘‘mi-cadena’’‘‘mi-cadena’’> (setq mi-string ‘‘mi-cadena-2’’)‘‘mi-cadena-2’’> mi-string‘‘mi-cadena-2’’

PJM Programacion basica en Lisp

Page 196: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))5656> a56

PJM Programacion basica en Lisp

Page 197: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))5656> a56

PJM Programacion basica en Lisp

Page 198: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))

5656> a56

PJM Programacion basica en Lisp

Page 199: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))56

56> a56

PJM Programacion basica en Lisp

Page 200: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))5656

> a56

PJM Programacion basica en Lisp

Page 201: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))5656> a

56

PJM Programacion basica en Lisp

Page 202: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Entrada

READ

READ convierte los caracteres de entrada en expresiones deLisp.

(read)

Ejemplo

> (setq a (read))5656> a56

PJM Programacion basica en Lisp

Page 203: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Salida

PRINT

PRINT convierte una expresion de Lisp en una secuencia decaracteres.

(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

Page 204: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Salida

PRINT

PRINT convierte una expresion de Lisp en una secuencia decaracteres.

(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

Page 205: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Salida

PRINT

PRINT convierte una expresion de Lisp en una secuencia decaracteres.

(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

Page 206: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Salida

PRINT

PRINT convierte una expresion de Lisp en una secuencia decaracteres.

(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

Page 207: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Referencia basica. Salida

PRINT

PRINT convierte una expresion de Lisp en una secuencia decaracteres.

(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

Page 208: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Ejemplo

> (load ‘‘mifichero’’)T ; T si lo carga, NIL si no lo carga

PJM Programacion basica en Lisp

Page 209: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Ejemplo

> (load ‘‘mifichero’’)T ; T si lo carga, NIL si no lo carga

PJM Programacion basica en Lisp

Page 210: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Ejemplo

> (load ‘‘mifichero’’)

T ; T si lo carga, NIL si no lo carga

PJM Programacion basica en Lisp

Page 211: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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

Ejemplo

> (load ‘‘mifichero’’)T ; T si lo carga, NIL si no lo carga

PJM Programacion basica en Lisp

Page 212: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Resumen

Se han mostrado los elementos basicos de Lisp, pero . . .

Para realizar proyectos mas extensos hay que conocer lasestrategias de programacion.

Se recomienda el libro [2] y el manual de referencia [1]

PJM Programacion basica en Lisp

Page 213: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Resumen

Se han mostrado los elementos basicos de Lisp, pero . . .

Para realizar proyectos mas extensos hay que conocer lasestrategias de programacion.

Se recomienda el libro [2] y el manual de referencia [1]

PJM Programacion basica en Lisp

Page 214: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

ContenidosObjetivos

Historia de LispProgramacion

Resumen

Resumen

Se han mostrado los elementos basicos de Lisp, pero . . .

Para realizar proyectos mas extensos hay que conocer lasestrategias de programacion.

Se recomienda el libro [2] y el manual de referencia [1]

PJM Programacion basica en Lisp

Page 215: Programacion b´asica en Lisp - dsi.uclm.esdsi.uclm.es/personal/luisrruiz/curso/tema4.pdf · Contenidos Objetivos Historia de Lisp Programaci´on Resumen Programacion b´asica en

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