Está en la página 1de 8

LABORATORIO N 1

LISP
En LISP existen dos tipos bsicos de palabras, los tomos y las listas. Todas las estructuras
definidas posteriormente son basadas en estas palabras.
tomos
Los tomos pueden ser palabras, tal como CASA, SACA, ATOMO, etc. En general, un tomo
en LISP puede ser cualquier combinacin de las 26 letras del alfabeto (excluyendo
obviamente la ) en conjunto con los 10 dgitos. Al igual que en otros sistemas, no son
tomos aquellas combinaciones que comienzan con dgitos.

LISTAS
El segundo tipo de palabras con las que trabaja LISP son las listas. Una lista es puede ser
una secuencia de tomos separados por un espacio y encerrados por parntesis redondos,
incluyendo la posibilidad de que una lista contenga una sublista que cumple con las
mismas caractersticas.

Se define TRMINO de una lista como un elemento de una lista, ya sea un tomo o una
sublista. As, lista quedara definida como la secuencia:
(trmino1 trmino2 ..... trminok)
Donde K es el nmero de elementos de la lista.

En LISP, una lista se reconoce porque va entre parntesis, en cambio, un tomo no.
(LISTA) es una lista.
ATOMO es un tomo.
IMPORTANTE !
NO OLVIDAR NUNCA DE REVISAR QUE LOS PARENTESIS ESTEN BIEN

1) Tipo de Datos:

1.1) tomos
Ejemplo de tomo: hola, 9, nil,T
- Asignar un valor un tomo usando setq y

set

CL-USER 1 > (setq I 54)


54
CL-USER 2 > (setq my_weight

56)

56
CL-USER 3 > (setq

(+ 50 6))

(- 60 4))

'I

(- 8

56
CL-USER 4 > (setq
56
CL-USER 5 > (set

5))

CL-USER 6 > (set

'I

56)

56
Ejercicios

: Plantear y resolver 20 ejercicios y explicar su significado

COMANDOS FUNDAMENTALES

QUOTE

Notar que QUOTE devuelve lo mismo que recibe;


Aparentemente esto no tiene mucho sentido, no obstante, la utilidad de
este comando aparece cuando se utiliza, por ejemplo, el comando CAR
entre parntesis, por ejemplo:
(CAR(A B C))
En este caso, CAR buscar el primer elemento de la lista que genere la
funcin A, pero como A no es una funcin (a menos que se defina como
tal) generar un error. La sentencia correcta sera:
(CAR(QUOTE(A B C))
CL-USER 7 > (quote(esta es una prueba))
(ESTA ES UNA PRUEBA)
CL-USER 8 > (quote hola)
HOLA
CL-USER 9 > (car(quote((esta es una prueba))))
(ESTA ES UNA PRUEBA)
CL-USER 10 > (car(quote((esta) es una prueba)))
(ESTA)

ATOM

CL-USER 11 > (atom(quote ABC54))


T
CL-USER 12 > (atom(quote(es un ejemplo)))
NIL
CDR

CL-USER 2 : 1 > (cdr '(1 2))


(2)
CL-USER 3 : 1 > (cdr '(a b c))
(B C)
CL-USER 4 : 1 > (cdr '(1 . 2))
2
CL-USER 5 : 1 > (cdr '(M N O P Q))
(N O P Q)

CONS

CL-USER 8 : 2 > (cons 1 nil)


(1)
CL-USER 9 : 2 > (cons 'a 'b)
(A . B)
CL-USER 10 : 2 > (cons 1 2)
(1 . 2)
CL-USER 11 : 2 > (cons 'a (cons 'b (cons( 'c '())))
(A B C)
CL-USER 12 : 2 > (cons 'a '(b c d))
(A B C D)
CL-USER 13 : 2 > (cons nil nil)
(NIL)
CL-USER 14 : 2 > (cons nil 2)
(NIL . 2)
CL-USER 16 : 2 > (cons 1 (cons 2 (cons 3 (cons 4 nil))))
(1 2 3 4)

CL-USER 17 : 2 > (list 'a 'b)


(A B)
CL-USER 18 : 2 > (first '(a b c))
A
CL-USER 19 : 2 > (rest '(1 2))
(2)

CL-USER 20 : 2 > (rest '(1 . 2))


2
CL-USER 21 : 2 > (rest '(a b c))
(B C)
CL-USER 26 : 3 > (print (* 2 3))
6
6
CL-USER 27 : 3 > (+ (print(* 2 3)) (print 9))
6
9
15
CL-USER 28 : 3 > (+ (print(* 2 3)) (print(/ 4 2)) (print 9))
6
2
9
17
CL-USER 5 : 2 > (setq y (read))
26
26
CL-USER 6 : 2 > (print x)
14
14
CL-USER 7 : 2 > (print y)
26
26

CL-USER 1 > (let((x 1) (y 2)) (/ y x))


2
CL-USER 4 : 1 > (let((x 3) (y 5) (z 4)) (* x y z))
60
CL-USER 5 : 1 > (let ((p 2)(q 6)(r 3)) (- p q)(+ r p))
5
Ejercicios

: Plantear y resolver 20 ejercicios y explicar su significado

FUNCIONES PRIMITIVAS
Incluye operaciones: +, -, *, /, max, min, sqrt,

CL-USER 1 > (- (+ 2 3) (* 3 4))


-7
CL-USER 2 > (+ (* 2 3) 4)
10
CL-USER 3 > (+ 2 3 5)
10
CL-USER 5 : 1 > (/ (- 7 1) (- 4 2))
3
CL-USER 22 : 2 > (+ (* 2 3) (/ 3 2) 9)
33/2
CL-USER 6 : 1 > (quote (+ 2 3))
(+ 2 3)
CL-USER 7 : 1 > (list '(+ 2 3) (+ 2 3))

((+ 2 3) 5)

Ejercicios

: Plantear y resolver 25 ejercicios y explicar su significado

También podría gustarte