PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de...

14
PRIMER TUTORIAL DE “LipsWorks Personal Edition 6.0.1” Interprete 1. Realizar una suma Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP más elementales. Siempre tienen un nombre constituido por una secuencia de caracteres y por ello se asemejan a las palabras de un lenguaje. Los nombres de átomos se separan de otras expresiones mediante espacios en blanco, paréntesis o cambios de línea. Un átomo no es divisible. Como norma general, todos los elementos que no sean una lista se consideran átomos. Al recibir un átomo, el evaluador lisp intenta determinar su valor. Este valor puede estar representado por el nombre mismo del átomo, que entonces consideraremos como una "constante" o puede ser un objeto LISP distinto, en cuyo caso estaremos ante un átomo "simbólico". Los átomos simbólicos se utilizan dentro de los programas para almacenar valores, siendo conocidos entonces como "variables".

Transcript of PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de...

Page 1: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

PRIMER TUTORIAL DE “LipsWorks Personal

Edition 6.0.1”

Interprete

1. Realizar una suma

Ejemplos:

Tipos de Datos

Existen 2 Tipos de datos Átomos y Listas

Datos Tipo Átomos:

Los átomos son las expresiones LISP más elementales. Siempre tienen un nombre

constituido por una secuencia de caracteres y por ello se asemejan a las palabras de un

lenguaje. Los nombres de átomos se separan de otras expresiones mediante espacios en

blanco, paréntesis o cambios de línea. Un átomo no es divisible. Como norma general,

todos los elementos que no sean una lista se consideran átomos. Al recibir un átomo, el

evaluador lisp intenta determinar su valor. Este valor puede estar representado por el

nombre mismo del átomo, que entonces consideraremos como una "constante" o puede

ser un objeto LISP distinto, en cuyo caso estaremos ante un átomo "simbólico". Los

átomos simbólicos se utilizan dentro de los programas para almacenar valores, siendo conocidos entonces como "variables".

Page 2: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Ejemplos:

Asignar un Valor a un Atomo con los comandos : setq – setf

Ejemplos:

Valores Asignados a las variables :

Palabras Reservadas :

Page 3: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Ejemplos:

Caso Insensible:

mNp y MNP son el mismo átomo

Datos Tipo Listas:

Listas: (b), (+ 4 5), (m(n o p) k), (), nil

nil es un átomo y una lista. Es equivalente a la lista vacía: ().

Evaluar una lista siempre invoca una función. (nombre-función arg1…argn)

Ejemplos:

Cuando evalúas una lista, primero evalúa todos los argumentos y entonces aplica la función a todos esos resultados.

Page 4: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Funciones Primitivas 1

Lisp incluye muchas funciones inherentes: +,*,-,/,max, min, sqrt.

Más importante, incluye operaciones de lista inherentes.

cons construye una lista que contiene data y un tallo.

Ejemplos:

Note que el valor del tallo que significa ‘nada’ es nil. Ahora intente usar esto con átomos que no son reservados

Page 5: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Funciones Primitivas: Construyendo Listas

Nosotros necesitamos decirle al intérprete que no evalúe el átomo a. Para eso, usamos ’.

Ejemplos :

‘ puede ser aplicado a una lista completa.

Ejemplos:

cons puede ser irritante: hacer una lista de 'a, 'b, 'c y 'd sin colocar entre comillas

una lista.

Page 6: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Ejemplos :

Apostrofe y Coma

A veces nosotros queremos colocar comilla a una lista excepto para uno o dos de sus miembros, por ejemplo:

Ejemplos :

Apostrofe y coma nos permiten escribir sin muchos apostrofes:

Ejemplos :

Page 7: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Por lo tanto, la coma dentro de una comilla le dice a Lisp que evalúe lo que sigue. Eso es justo lo opuesto de lo que la función ' hace normalmente.

Funciones Primitivas: Accesando Listas

Una vez que una lista es construida, cómo nosotros accesamos a sus miembros:

first y car dan el primer elemento de una lista

Ejemplos:

rest y cdr dan la lista menos el primer elemento

Ejemplos:

car y cdr pueden ser combinados

Page 8: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Trabaja de derecha hacia la izquierda.

Ejemplos :

Cambiando los valores de los átomos

Ejemplos :

Ejemplos :

Page 9: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

No hay efectos colaterales

Se necesita setq para cambiar el valor de un átomo

setf es una versión de setq que toma una función como su primer elemento. (setf (cadr miguel)89) 89 Miguel (l 5 g) Ejemplos: (setq miguel ‘(q o p)) (q o p) (setf (cadr miguel)45) 45 Miguel (q 45 p)

Igualdad

Hablemos de 2 tipos de igualdad, con ejemplos:

Page 10: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Ejemplos:

(equal x y) es T cuando (eq x y) es verdadero y cuando las cosas lucen igual son

verdaderos (del mismo tipo).

Page 11: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Conjuntos

Se pueden tratar a las listas como conjuntos (el orden no es preservado)

Ejemplos :

La evaluación de la condición para determinar si 2 ítems en el conjunto son iguales es la función igual.

Ejemplos :

Page 12: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

La adjunta y el conjunto diferencia pueden usar: test #'equal. Pueden incluso proveer

su propia función (una vez que nosotros mostremos como definir una)

Más funciones

Ejemplos:

Ejemplos :

Ejemplos :

Page 13: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

Ejemplos :

Ejemplos :

Representando oraciones KIF

KIF significa Knowledge Interchange Format (Formato de intercambio de conocimiento)

Oraciones tipo KIF:

(<= q (and g f)) (not (not f)) (or a (not q)g)

Page 14: PRIMER TUTORIAL DE “LipsWorks Personal Edition … · Ejemplos: Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP

¿Cómo representamos estas en Lisp? Es simple, usamos list

Ejemplos:

Note que las operaciones KIF =>,<=,<=>,or, and, not siempre serán el primer elemento de la

lista.