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 CL-USER 3 > (setq 56 CL-USER 4 > (setq 56 CL-USER 5 > (set 3 'I (- 8 5)) B (- 60 4)) A (+ 50 6)) 56)

CL-USER 6 > (set 56 Ejercicios

'I

56)

: Plantear y resolver 8 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 10 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 10 ejercicios y explicar su significado

También podría gustarte