Está en la página 1de 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".
Ejemplos:

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

Ejemplos:

Valores Asignados a las variables :

Palabras Reservadas :
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.
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


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


Trabaja de derecha hacia la izquierda.

Ejemplos :

Cambiando los valores de los átomos


Ejemplos :

Ejemplos :
 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:


Ejemplos:

 (equal x y) es T cuando (eq x y) es verdadero y cuando las cosas lucen igual son
verdaderos (del mismo tipo).
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 :
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 :

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)


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

También podría gustarte