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.