Programacion Lisp

download Programacion Lisp

of 215

Transcript of Programacion Lisp

  • 7/28/2019 Programacion Lisp

    1/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Programacion basica en Lisp

    Pedro J. MoralesDigital Audio & Computer Music Laboratory. UCLM

    July 29, 2007

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    2/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    1 Objetivos

    2 Historia de Lisp

    3 Programacion

    4 Resumen

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    3/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Objetivos

    Aproximacion historica.

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    4/215

    C id

  • 7/28/2019 Programacion Lisp

    5/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    1960. John McCarthy publica un estudio crucial para la

    programacion.

    PJM Programacion basica en Lisp

    C t id

    http://find/
  • 7/28/2019 Programacion Lisp

    6/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    1960. John McCarthy publica un estudio crucial para la

    programacion.Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.

    PJM Programacion basica en Lisp

    Contenidos

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    7/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    1960. John McCarthy publica un estudio crucial para laprogramacion.

    Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.

    Llamo al lenguaje LISP, por List Processing

    PJM Programacion basica en Lisp

    Contenidos

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    8/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    1960. John McCarthy publica un estudio crucial para laprogramacion.

    Con unos pocos operadores y notacion para funciones sepuede construir un lenguaje.

    Llamo al lenguaje LISP, por List Processing

    Usaba la lista como estructura para representar tanto datoscomo programas.

    PJM Programacion basica en Lisp

    Contenidos

    http://find/
  • 7/28/2019 Programacion Lisp

    9/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    El descubrimiento de McCarthy es un hito en la historia de laprogramacion...

    PJM Programacion basica en Lisp

    Contenidos

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    10/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Aproximacion historica

    El descubrimiento de McCarthy es un hito en la historia de laprogramacion...

    . . . tambien es un modelo que marca la tendencia de loslenguajes actuales.

    PJM Programacion basica en Lisp

    Contenidos

    http://find/
  • 7/28/2019 Programacion Lisp

    11/215

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Aproximacion historica

    El descubrimiento de McCarthy es un hito en la historia de laprogramacion...

    . . . tambien es un modelo que marca la tendencia de loslenguajes actuales.

    Hay dos modelos: C y Lisp

    PJM Programacion basica en Lisp

    Contenidos

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    12/215

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Aproximacion historica

    El descubrimiento de McCarthy es un hito en la historia de laprogramacion...

    . . . tambien es un modelo que marca la tendencia de loslenguajes actuales.

    Hay dos modelos: C y Lisp

    Los lenguajes disenados en los ultimos 20 anos se basan en elmodelo de C al que anaden partes de Lisp.

    PJM Programacion basica en Lisp

    Contenidos

    http://find/
  • 7/28/2019 Programacion Lisp

    13/215

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Lisp es un lenguaje configurable

    Lisp es el lenguaje mas antiguo que se mantiene activo.

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    14/215

    ContenidosObj ti

  • 7/28/2019 Programacion Lisp

    15/215

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Lisp es un lenguaje configurable

    Lisp es el lenguaje mas antiguo que se mantiene activo.Lisp se puede programar en Lisp.

    Lisp se adapta a cualquier paradigma de programacion.

    PJM Programacion basica en Lisp

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    16/215

  • 7/28/2019 Programacion Lisp

    17/215

  • 7/28/2019 Programacion Lisp

    18/215

  • 7/28/2019 Programacion Lisp

    19/215

    ContenidosObjetivos

  • 7/28/2019 Programacion Lisp

    20/215

    Objet osHistoria de Lisp

    ProgramacionResumen

    Aplicaciones

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

    Scheme

    PJM Programacion basica en Lisp

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    21/215

  • 7/28/2019 Programacion Lisp

    22/215

  • 7/28/2019 Programacion Lisp

    23/215

  • 7/28/2019 Programacion Lisp

    24/215

  • 7/28/2019 Programacion Lisp

    25/215

  • 7/28/2019 Programacion Lisp

    26/215

  • 7/28/2019 Programacion Lisp

    27/215

    ContenidosObjetivos

    Historia de Lisp

  • 7/28/2019 Programacion Lisp

    28/215

    Historia de LispProgramacion

    Resumen

    Expresiones en Lisp

    Expresiones

    Lisp evalua expresiones.

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    29/215

    Historia de LispProgramacion

    Resumen

    Expresiones en Lisp

    Expresiones

    Lisp evalua expresiones.

    Una expresion es:

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    30/215

    pProgramacion

    Resumen

    Expresiones en Lisp

    Expresiones

    Lisp evalua expresiones.

    Una expresion es:

    Un atomo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    31/215

    pProgramacion

    Resumen

    Expresiones en Lisp

    Expresiones

    Lisp evalua expresiones.

    Una expresion es:

    Un atomoUna lista.

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    32/215

    ContenidosObjetivos

    Historia de LispP i

  • 7/28/2019 Programacion Lisp

    33/215

    ProgramacionResumen

    Tipos basicos de datos

    Atomos

    Numericos: 7, 12.0, 3.1415

    Listas

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispP i

    http://find/
  • 7/28/2019 Programacion Lisp

    34/215

    ProgramacionResumen

    Tipos basicos de datos

    Atomos

    Numericos: 7, 12.0, 3.1415

    Smbolo: Secuencia de caracteres alfanumericos

    Listas

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    35/215

    ContenidosObjetivosHistoria de Lisp

    Programacion

  • 7/28/2019 Programacion Lisp

    36/215

    ProgramacionResumen

    Tipos basicos de datos

    Atomos

    Numericos: 7, 12.0, 3.1415

    Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,

    mesa

    Listas

    Se escriben entre parentesis.

    PJM Programacion basica en Lisp

    ContenidosObjetivosHistoria de Lisp

    Programacion

    http://find/
  • 7/28/2019 Programacion Lisp

    37/215

    ProgramacionResumen

    Tipos basicos de datos

    Atomos

    Numericos: 7, 12.0, 3.1415

    Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,

    mesa

    Listas

    Se escriben entre parentesis.

    Contienen un conjunto de elementos ordenados:

    (2 45 27), (nota c4)

    PJM Programacion basica en Lisp

    ContenidosObjetivosHistoria de Lisp

    Programacion

    http://find/
  • 7/28/2019 Programacion Lisp

    38/215

    ProgramacionResumen

    Tipos basicos de datos

    Atomos

    Numericos: 7, 12.0, 3.1415

    Smbolo: Secuencia de caracteres alfanumericos a, nota, c4,

    mesa

    Listas

    Se escriben entre parentesis.

    Contienen un conjunto de elementos ordenados:

    (2 45 27), (nota c4)

    Puede estar vaca: ()

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    39/215

    ContenidosObjetivosHistoria de Lisp

    Programacion

  • 7/28/2019 Programacion Lisp

    40/215

    gResumen

    Bucle WAIT-READ-EVAL-PRINT

    WAIT Lisp muestra el prompt y espera >

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    41/215

  • 7/28/2019 Programacion Lisp

    42/215

  • 7/28/2019 Programacion Lisp

    43/215

    ContenidosObjetivosHistoria de Lisp

    ProgramacionR

  • 7/28/2019 Programacion Lisp

    44/215

    Resumen

    Evaluacion de atomos

    Numericos: Devuelven su valor.

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    45/215

  • 7/28/2019 Programacion Lisp

    46/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

  • 7/28/2019 Programacion Lisp

    47/215

    Resumen

    Evaluacion de atomos

    Numericos: Devuelven su valor.

    Simbolicos: Si el nombre comienza por : devuelve el mismonombre.

    Si tiene ligado un valor devuelve ese valor.

    Si no tiene valor ligado, devuelve un error.

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    http://find/
  • 7/28/2019 Programacion Lisp

    48/215

    Resumen

    Ejemplos

    > 5.6

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    http://find/
  • 7/28/2019 Programacion Lisp

    49/215

    Ejemplos

    > 5.6

    5.6

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    http://find/
  • 7/28/2019 Programacion Lisp

    50/215

    Ejemplos

    > 5.6

    5.6

    > :zx

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    51/215

  • 7/28/2019 Programacion Lisp

    52/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

  • 7/28/2019 Programacion Lisp

    53/215

    Ejemplos

    > 5.6

    5.6

    > :zx:ZX

    > dfg

    error: unbound variable - DFG

    if continued: try evaluating symbol again

    1>

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    http://find/
  • 7/28/2019 Programacion Lisp

    54/215

    Expresiones matematicas

    Se utiliza la notacion prefija.

    4 + 3

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    55/215

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

  • 7/28/2019 Programacion Lisp

    56/215

    Expresiones matematicas

    Se utiliza la notacion prefija.

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

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    57/215

  • 7/28/2019 Programacion Lisp

    58/215

  • 7/28/2019 Programacion Lisp

    59/215

  • 7/28/2019 Programacion Lisp

    60/215

  • 7/28/2019 Programacion Lisp

    61/215

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    O d l d l i

  • 7/28/2019 Programacion Lisp

    62/215

    Orden normal de evaluacion

    La evaluacion empieza por las listas mas internas de la expresion.

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

    (+ (* 3 1) 4)

    (+ (* 3 1) 4)

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    O d l d l i

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    63/215

    Orden normal de evaluacion

    La evaluacion empieza por las listas mas internas de la expresion.

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

    (+ (* 3 1) 4)

    (+ (* 3 1) 4)

    (+ 3 4)

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    64/215

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    O d l d l i

  • 7/28/2019 Programacion Lisp

    65/215

    Orden normal de evaluacion

    La evaluacion empieza por las listas mas internas de la expresion.

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

    (+ (* 3 1) 4)(+ (* 3 1) 4)

    (+ 3 4)

    (+ 3 4)

    7

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    66/215

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Evaluacion n de funciones

  • 7/28/2019 Programacion Lisp

    67/215

    Evaluacion n de funciones

    El primer elemento de la lista es una funcion

    Se evalua el resto de los elementos.

    Se aplican como argumentos a la funcion.

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Evaluacion de formas especiales

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    68/215

    Evaluacion de formas especiales

    Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.

    > (setq x (- 2 3))

    PJM Programacion basica en Lisp

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    69/215

  • 7/28/2019 Programacion Lisp

    70/215

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Evaluacion de formas especiales

  • 7/28/2019 Programacion Lisp

    71/215

    Evaluacion de formas especiales

    Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.

    > (setq x (- 2 3))

    ; se evalua el segundo argumento; se asigna el valor del segundo argumento

    ; al simbolo (que es el primer argumento)

    > -1 ; resultado

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Evaluacion de formas especiales

    http://find/
  • 7/28/2019 Programacion Lisp

    72/215

    Evaluacion de formas especiales

    Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.

    > (setq x (- 2 3))

    ; se evalua el segundo argumento; se asigna el valor del segundo argumento

    ; al simbolo (que es el primer argumento)

    > -1 ; resultado

    > x ; el valor asignado a x es

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Evaluacion de formas especiales

    http://find/
  • 7/28/2019 Programacion Lisp

    73/215

    Evaluacion de formas especiales

    Las formas especiales evaluan sus argumentos en distinto ordenque las funciones.

    > (setq x (- 2 3))

    ; se evalua el segundo argumento; se asigna el valor del segundo argumento

    ; al simbolo (que es el primer argumento)

    > -1 ; resultado

    > x ; el valor asignado a x es

    > -1>

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    74/215

  • 7/28/2019 Programacion Lisp

    75/215

  • 7/28/2019 Programacion Lisp

    76/215

    Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. SETQ

  • 7/28/2019 Programacion Lisp

    77/215

    Q

    SETQ

    Liga un valor a un smbolo.

    (setq smbolo valor)

    Ejemplos

    > (setq x 25)

    > (setq do-central :c4)

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. LET

    http://find/
  • 7/28/2019 Programacion Lisp

    78/215

    LET

    Liga valores locales a uno, varios o ningun smbolo.

    Ejemplos

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. LET

    http://find/
  • 7/28/2019 Programacion Lisp

    79/215

    LET

    Liga valores locales a uno, varios o ningun smbolo.

    (let (ligaduras) expresiones)

    Ejemplos

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    80/215

  • 7/28/2019 Programacion Lisp

    81/215

    Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. LET

  • 7/28/2019 Programacion Lisp

    82/215

    LET

    Liga valores locales a uno, varios o ningun smbolo.

    (let (ligaduras) expresiones)

    Ejemplos

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

    10

    > a

    PJM Programacion basica en Lisp

    Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. LET

    http://find/
  • 7/28/2019 Programacion Lisp

    83/215

    LET

    Liga valores locales a uno, varios o ningun smbolo.

    (let (ligaduras) expresiones)

    Ejemplos

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

    10

    > aerror: unbound variable - A

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. COND

    http://find/
  • 7/28/2019 Programacion Lisp

    84/215

    COND

    Evalua expresiones de manera condicional.

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. COND

    http://find/
  • 7/28/2019 Programacion Lisp

    85/215

    COND

    Evalua expresiones de manera condicional.

    (cond (expresion-logica expresiones*)*)

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de LispProgramacion

    Resumen

    Referencia basica. COND

    http://find/
  • 7/28/2019 Programacion Lisp

    86/215

    COND

    Evalua expresiones de manera condicional.

    (cond (expresion-logica expresiones*)*)

    Ejemplos

    > (let ((a 1) (b 2) (c 1) (d 1))

    (cond ((eql a b) 1)

    ((eql a c) "Primera expresion" 2)

    ((eql a d) 3)))

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. COND

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    87/215

    COND

    Evalua expresiones de manera condicional.

    (cond (expresion-logica expresiones*)*)

    Ejemplos

    > (let ((a 1) (b 2) (c 1) (d 1))

    (cond ((eql a b) 1)

    ((eql a c) "Primera expresion" 2)

    ((eql a d) 3)))

    2

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    88/215

    QUOTEBloquea la evaluacion.

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    89/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    90/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://goforward/http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    91/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    92/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    a

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    93/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    a

    > (setq a (quote b))

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    94/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    a

    > (setq a (quote b))

    b

    PJM Programacion basica en Lisp Contenidos

    ObjetivosHistoria de Lisp

    ProgramacionResumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    95/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    a

    > (setq a (quote b))

    b

    > a

    PJM Programacion basica en Lisp Contenidos

    Objetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. QUOTE

    http://find/
  • 7/28/2019 Programacion Lisp

    96/215

    QUOTEBloquea la evaluacion.

    (quote smbolo) devuelve smbolo

    Notacion equivalente: smbolo

    Ejemplos

    > (quote a)

    a

    > (setq a (quote b))

    b

    > a

    b

    PJM Programacion basica en Lisp Contenidos

    Objetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    97/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    Objetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    98/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    PJM Programacion basica en Lisp Contenidos

    Objetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    99/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    100/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    (a . b)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://goforward/http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    101/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    (a . b)

    > (cons a ())

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    102/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    (a . b)

    > (cons a ())

    (a)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    103/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    (a . b)

    > (cons a ())

    (a)> (cons a (cons b ()))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. CONS

    http://find/
  • 7/28/2019 Programacion Lisp

    104/215

    CONS

    Constructor de un par ordenado. Puede construir listas.

    (cons primer-elemento segundo-elemento)

    Ejemplos

    > (cons a b)

    (a . b)

    > (cons a ())

    (a)> (cons a (cons b ()))

    (a b)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://find/
  • 7/28/2019 Programacion Lisp

    105/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://find/
  • 7/28/2019 Programacion Lisp

    106/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    (list elemento-1 elemento-2 elemento-3 . . . )

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://find/
  • 7/28/2019 Programacion Lisp

    107/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    (list elemento-1 elemento-2 elemento-3 . . . )

    Ejemplos

    > (list 1 2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://goforward/http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    108/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    (list elemento-1 elemento-2 elemento-3 . . . )

    Ejemplos

    > (list 1 2 3)

    (1 2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://find/
  • 7/28/2019 Programacion Lisp

    109/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    (list elemento-1 elemento-2 elemento-3 . . . )

    Ejemplos

    > (list 1 2 3)

    (1 2 3)

    > (list 1 a :hola cadena)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LIST

    http://find/
  • 7/28/2019 Programacion Lisp

    110/215

    LIST

    Construye listas de forma mas sencilla que CONS.

    (list elemento-1 elemento-2 elemento-3 . . . )

    Ejemplos

    > (list 1 2 3)

    (1 2 3)

    > (list 1 a :hola cadena)

    (1 a :hola cadena)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    111/215

    APPEND

    Concatena listas.

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    112/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    113/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    114/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    115/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (setq lista-2 (list 1 a :hola cadena))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    116/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (setq lista-2 (list 1 a :hola cadena))

    (1 a :hola cadena)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    117/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (setq lista-2 (list 1 a :hola cadena))

    (1 a :hola cadena)

    > (append lista-1 lista-2)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. APPEND

    http://find/
  • 7/28/2019 Programacion Lisp

    118/215

    APPEND

    Concatena listas.

    (append lista-1 lista-2 lista-3 . . . )

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (setq lista-2 (list 1 a :hola cadena))

    (1 a :hola cadena)

    > (append lista-1 lista-2)

    (1 2 3 1 a :hola cadena)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    http://find/
  • 7/28/2019 Programacion Lisp

    119/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    http://find/
  • 7/28/2019 Programacion Lisp

    120/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    http://find/
  • 7/28/2019 Programacion Lisp

    121/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    http://find/
  • 7/28/2019 Programacion Lisp

    122/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    http://find/
  • 7/28/2019 Programacion Lisp

    123/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (first lista-1)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    S C

    http://find/
  • 7/28/2019 Programacion Lisp

    124/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (first lista-1)

    1

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    FIRST E i l CAR

    http://find/
  • 7/28/2019 Programacion Lisp

    125/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (first lista-1)

    1

    > (first (cons 5 7))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. FIRST

    FIRST E i l CAR

    http://find/
  • 7/28/2019 Programacion Lisp

    126/215

    FIRST. Equivalente a CAR.

    Selecciona el primer elemento de un par ordenado (o lista).

    (first lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (first lista-1)

    1

    > (first (cons 5 7))

    5

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacionResumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    S l l d l d d d ( l l

    http://goforward/http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    127/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    S l i l d l d d d ( l li

    http://find/
  • 7/28/2019 Programacion Lisp

    128/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    S l i l d l t d d d ( l li t

    http://find/
  • 7/28/2019 Programacion Lisp

    129/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    S l i l d l t d d d ( l li t

    http://find/
  • 7/28/2019 Programacion Lisp

    130/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    131/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    132/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    (2 3)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    133/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    (2 3)

    > (rest (cons 5 7))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    134/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    (2 3)

    > (rest (cons 5 7))

    7

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    135/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    (2 3)

    > (rest (cons 5 7))

    7

    > (first (rest lista-1))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. REST

    REST. Equivalente a CDR.

    Selecciona el segundo elemento de un par ordenado (o la lista

    http://find/
  • 7/28/2019 Programacion Lisp

    136/215

    Selecciona el segundo elemento de un par ordenado (o la listaque sigue al primer elemento de una lista).

    (rest lista)

    Ejemplos> (setq lista-1 (list 1 2 3))

    (1 2 3)

    > (rest lista-1)

    (2 3)

    > (rest (cons 5 7))

    7

    > (first (rest lista-1))

    2PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

    http://find/
  • 7/28/2019 Programacion Lisp

    137/215

    EQ.Detecta si el valor de un smbolo es identico a otro.

    Ejemplos

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    138/215

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

  • 7/28/2019 Programacion Lisp

    139/215

    QDetecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    140/215

    QDetecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    T

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

    http://find/
  • 7/28/2019 Programacion Lisp

    141/215

    QDetecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    T

    > (eq a b)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

    http://find/
  • 7/28/2019 Programacion Lisp

    142/215

    Detecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    T

    > (eq a b)

    NIL

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.

    http://find/
  • 7/28/2019 Programacion Lisp

    143/215

    Detecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    T

    > (eq a b)

    NIL

    > (eq (list 1 2 3) (list 1 2 3))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. EQ

    EQ.D l l d b l d

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    144/215

    Detecta si el valor de un smbolo es identico a otro.

    (eq smbolo-1 smbolo-2)

    Ejemplos> (eq a a)

    T

    > (eq a b)

    NIL

    > (eq (list 1 2 3) (list 1 2 3))

    NIL

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. DEFUN

    DEFUN.

    Sirve para definir una funcion de usuario y ligarla a un

    http://find/
  • 7/28/2019 Programacion Lisp

    145/215

    smbolo.

    Ejemplo: Calculo de la hipotenusa

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. DEFUN

    DEFUN.

    Sirve para definir una funcion de usuario y ligarla a un b l

    http://find/
  • 7/28/2019 Programacion Lisp

    146/215

    smbolo.

    (defun nombre-funcion lista-de-argumentos cuerpo)

    Ejemplo: Calculo de la hipotenusa

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. DEFUN

    DEFUN.

    Sirve para definir una funcion de usuario y ligarla a un b l

    http://find/
  • 7/28/2019 Programacion Lisp

    147/215

    smbolo.

    (defun nombre-funcion lista-de-argumentos cuerpo)

    Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)

    (sqrt (+ (expt a 2.0) (expt b 2.0))))

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. DEFUN

    DEFUN.

    Sirve para definir una funcion de usuario y ligarla a un b l

    http://find/
  • 7/28/2019 Programacion Lisp

    148/215

    smbolo.

    (defun nombre-funcion lista-de-argumentos cuerpo)

    Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)

    (sqrt (+ (expt a 2.0) (expt b 2.0))))

    Ejemplos

    > (pitagoras 3 4)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. DEFUN

    DEFUN.

    Sirve para definir una funcion de usuario y ligarla a uns b l

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    149/215

    smbolo.

    (defun nombre-funcion lista-de-argumentos cuerpo)

    Ejemplo: Calculo de la hipotenusa(defun pitagoras (a b)

    (sqrt (+ (expt a 2.0) (expt b 2.0))))

    Ejemplos

    > (pitagoras 3 4)

    5

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.( d d d 2 )

    http://find/
  • 7/28/2019 Programacion Lisp

    150/215

    > (setq identidad 25)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> ( t id tid d 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    151/215

    > (setq identidad 25)

    25

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> ( t id tid d 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    152/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    153/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    154/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    > identidad

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    155/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    > identidad

    25

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    156/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    > identidad

    25

    > (function identidad)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

    http://find/
  • 7/28/2019 Programacion Lisp

    157/215

    > (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    > identidad

    25

    > (function identidad)

    #

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    158/215

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica.

    Un smbolo puede estar ligado a un valor y una funcion.> (setq identidad 25)

  • 7/28/2019 Programacion Lisp

    159/215

    (setq identidad 25)

    25

    > (defun identidad (a) a)

    IDENTIDAD

    > identidad

    25

    > (function identidad)

    #

    > #identidad#

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. LAMBDA

    LAMBDA

    http://find/
  • 7/28/2019 Programacion Lisp

    160/215

    LAMBDA.

    Devuelve una funcion sin nombre (sin ligarla a un smbolo).

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. LAMBDA

    LAMBDA

    http://find/
  • 7/28/2019 Programacion Lisp

    161/215

    LAMBDA.

    Devuelve una funcion sin nombre (sin ligarla a un smbolo).

    (lambda lista-de-argumentos cuerpo)

    Ejemplos

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    162/215

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. LAMBDA

    LAMBDA.

  • 7/28/2019 Programacion Lisp

    163/215

    LAMBDA.

    Devuelve una funcion sin nombre (sin ligarla a un smbolo).

    (lambda lista-de-argumentos cuerpo)

    Ejemplos

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

    7

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    http://find/
  • 7/28/2019 Programacion Lisp

    164/215

    Ejemplos

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    165/215

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    Funciona como una plantilla donde solo se evaluan las

  • 7/28/2019 Programacion Lisp

    166/215

    Funciona como una plantilla donde solo se evaluan lasexpresiones precedidas por una coma.

    (backquote plantilla)

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de Lisp

    ProgramacionResumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    Funciona como una plantilla donde solo se evaluan las

    http://find/
  • 7/28/2019 Programacion Lisp

    167/215

    Funciona como una plantilla donde solo se evaluan lasexpresiones precedidas por una coma.

    (backquote plantilla)

    plantilla

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    Funciona como una plantilla donde solo se evaluan las

    http://find/
  • 7/28/2019 Programacion Lisp

    168/215

    pexpresiones precedidas por una coma.

    (backquote plantilla)

    plantilla

    Ejemplos

    > (a b pi c)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    Funciona como una plantilla donde solo se evaluan las

    http://find/
  • 7/28/2019 Programacion Lisp

    169/215

    pexpresiones precedidas por una coma.

    (backquote plantilla)

    plantilla

    Ejemplos

    > (a b pi c)

    (a b pi c)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. BACKQUOTE

    BACKQUOTE. Abreviatura:

    Al aplicarlo a una lista realiza una evaluacion selectiva.

    Funciona como una plantilla donde solo se evaluan las

    http://find/
  • 7/28/2019 Programacion Lisp

    170/215

    pexpresiones precedidas por una coma.

    (backquote plantilla)

    plantilla

    Ejemplos

    > (a b pi c)

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

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    171/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.

  • 7/28/2019 Programacion Lisp

    172/215

    Ejemplo

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    173/215

    Ejemplo

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    174/215

    Ejemplo

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

    Ejemplos

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    175/215

    Ejemplo

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

    Ejemplos

    > (mi-setq a b)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    176/215

    Ejemplo

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

    Ejemplos

    > (mi-setq a b)B

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    177/215

    Ejemplo

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

    Ejemplos

    > (mi-setq a b)B

    > a

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. DEFMACRO

    DEFMACRO.

    Crea una expresion y despues la evalua.(defmacro nombre-macro lista-de-argumentos cuerpo)

    http://find/
  • 7/28/2019 Programacion Lisp

    178/215

    Ejemplo

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

    Ejemplos

    > (mi-setq a b)B

    > a

    BPJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    http://find/
  • 7/28/2019 Programacion Lisp

    179/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    180/215

    Creacion: (make array tamano)

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    181/215

    C ( y )

    Acceso: (aref array n)

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    182/215

    ( y )

    Acceso: (aref array n)

    Ejemplo

    > (setq mi-array (make-array 4))

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    183/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

  • 7/28/2019 Programacion Lisp

    184/215

    ( )

    Acceso: (aref array n)

    Ejemplo

    > (setq mi-array (make-array 4))

    #(NIL NIL NIL NIL)

    > (setf (aref mi-array 2) 3.14)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    185/215

    Acceso: (aref array n)

    Ejemplo

    > (setq mi-array (make-array 4))

    #(NIL NIL NIL NIL)

    > (setf (aref mi-array 2) 3.14)

    3.14

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    186/215

    Acceso: (aref array n)

    Ejemplo

    > (setq mi-array (make-array 4))

    #(NIL NIL NIL NIL)

    > (setf (aref mi-array 2) 3.14)

    3.14> mi-array

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Array

    Coleccion de datos a los que se accede mediante un ndicenumerico.

    Creacion: (make-array tamano)

    http://find/
  • 7/28/2019 Programacion Lisp

    187/215

    Acceso: (aref array n)

    Ejemplo

    > (setq mi-array (make-array 4))

    #(NIL NIL NIL NIL)

    > (setf (aref mi-array 2) 3.14)

    3.14> mi-array

    #(NIL NIL 3.14 NIL)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    http://find/
  • 7/28/2019 Programacion Lisp

    188/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/
  • 7/28/2019 Programacion Lisp

    189/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/
  • 7/28/2019 Programacion Lisp

    190/215

    Ejemplo

    > mi-cadena

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/
  • 7/28/2019 Programacion Lisp

    191/215

    Ejemplo

    > mi-cadenami-cadena

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    192/215

    Ejemplo

    > mi-cadenami-cadena

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

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    193/215

    Ejemplo

    > mi-cadenami-cadena

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

    mi-cadena-2

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    194/215

    Ejemplo

    > mi-cadenami-cadena

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

    mi-cadena-2

    > mi-string

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Otros tipos de datos

    Strings

    Secuencia de caracteres alfanumericos.

    Se autoevaluan.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    195/215

    Ejemplo

    > mi-cadenami-cadena

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

    mi-cadena-2

    > mi-string

    mi-cadena-2

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    196/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    (read)

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    197/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    (read)

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    198/215

    Ejemplo> (setq a (read))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    (read)

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    199/215

    Ejemplo> (setq a (read))

    56

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    (read)

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    200/215

    Ejemplo> (setq a (read))

    56

    56

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Entrada

    READ

    READ convierte los caracteres de entrada en expresiones deLisp.

    (read)

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    201/215

    Ejemplo> (setq a (read))

    56

    56

    > a

    PJM Programacion basica en Lisp

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    202/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Salida

    PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.

  • 7/28/2019 Programacion Lisp

    203/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Salida

    PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.

    ( i t i )

    http://find/
  • 7/28/2019 Programacion Lisp

    204/215

    (print expresion)

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Salida

    PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.

    ( i t i )

    http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    205/215

    (print expresion)

    Ejemplo

    > (print (list 1 2 3))

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Salida

    PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.

    (print expresion)

    http://find/
  • 7/28/2019 Programacion Lisp

    206/215

    (print expresion)

    Ejemplo

    > (print (list 1 2 3))

    (1 2 3); lo que imprime en la consola

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. Salida

    PRINTPRINT convierte una expresion de Lisp en una secuencia decaracteres.

    (print expresion)

    http://find/
  • 7/28/2019 Programacion Lisp

    207/215

    (print expresion)

    Ejemplo

    > (print (list 1 2 3))

    (1 2 3); lo que imprime en la consola

    (1 2 3); lo que devuelve

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LOAD

    LOAD

    Carga el codigo fuente contenido en un archivo.

    http://goforward/http://find/http://goback/
  • 7/28/2019 Programacion Lisp

    208/215

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LOAD

    LOAD

    Carga el codigo fuente contenido en un archivo.

    (load path-y-nombre-archivo) ; asume la extension .lsp

    http://find/
  • 7/28/2019 Programacion Lisp

    209/215

    (load path y nombre archivo) ; asume la extension .lsp

    Ejemplo

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LOAD

    LOAD

    Carga el codigo fuente contenido en un archivo.

    (load path-y-nombre-archivo) ; asume la extension .lsp

    http://find/
  • 7/28/2019 Programacion Lisp

    210/215

    ( p y ) ; p

    Ejemplo

    > (load mifichero)

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Referencia basica. LOAD

    LOAD

    Carga el codigo fuente contenido en un archivo.

    (load path-y-nombre-archivo) ; asume la extension .lsp

    http://find/
  • 7/28/2019 Programacion Lisp

    211/215

    ( p y ) ; p

    Ejemplo

    > (load mifichero)

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

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Resumen

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

    http://find/
  • 7/28/2019 Programacion Lisp

    212/215

    PJM Programacion basica en Lisp

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    Resumen

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

    Para realizar proyectos mas extensos hay que conocer las

    http://find/
  • 7/28/2019 Programacion Lisp

    213/215

    Para realizar proyectos mas extensos hay que conocer las

    estrategias de programacion.

    PJM Programacion basica en Lisp

    http://find/
  • 7/28/2019 Programacion Lisp

    214/215

    ContenidosObjetivos

    Historia de LispProgramacion

    Resumen

    [Dannenberg, 2007] Roger B. Dannenberg.Nyquist Reference Manual, Version 2.33Carnegie Mellon University, 2007.

    [Touretzky, 1990] David Touretzky.Common Lisp: A Gentle Introduction to SymbolicComputation.Carnegie Mellon University, 1990.

  • 7/28/2019 Programacion Lisp

    215/215

    http://www.cs.cmu.edu/~dst/LispBook

    [Steele, 1990] Guy L. Steele Jr.Common Lisp the Language, 2nd editionDigital Press, 1990.http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2

    PJM Programacion basica en Lisp

    http://find/