LABORATORIO N° 1 LISP

En LISP existen dos tipos básicos 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 combinación de las 26 letras del alfabeto (excluyendo obviamente la “ñ”) en conjunto con los 10 dígitos. Al igual que en otros sistemas, no son átomos aquellas combinaciones que comienzan con dígitos.

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 paréntesis redondos, incluyendo la posibilidad de que una lista contenga una sublista que cumple con las mismas características.

Se define TÉRMINO de una lista como un elemento de una lista, ya sea un átomo o una sublista. Así, lista quedaría definida como la secuencia: (término1 término2 ..... términok) Donde K es el número de elementos de la lista.

En LISP, una lista se reconoce porque va entre paréntesis, en cambio, un átomo no. • (LISTA) es una lista.

9. nil.• ATOMO es un átomo.60 4)) A (+ 50 6)) 56) . ¡IMPORTANTE ! NO OLVIDAR NUNCA DE REVISAR QUE LOS PARENTESIS ESTEN BIEN 1) Tipo de Datos: 1.1) Átomos Ejemplo de átomo: hola.8 5)) B (.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 (.T .

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. por ejemplo: (CAR(A B C)) En este caso. CAR buscará el primer elemento de la lista que genere la función A. La sentencia correcta sería: (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) . no obstante. por ejemplo. pero como A no es una función (a menos que se defina como tal) generará un error. Aparentemente esto no tiene mucho sentido. el comando CAR entre paréntesis. la utilidad de este comando aparece cuando se utiliza.

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) .

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)) .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 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 .

(+ 2 3) (* 3 4)) -7 CL-USER 2 > (+ (* 2 3) 4) 10 CL-USER 3 > (+ 2 3 5) 10 CL-USER 5 : 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 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)) (. min.p q)(+ r p)) 5 Ejercicios : Plantear y resolver 10 ejercicios y explicar su significado FUNCIONES PRIMITIVAS Incluye operaciones: +. *. sqrt. … CL-USER 1 > (. -. max.7 1) (. /.

CL-USER 7 : 1 > (list '(+ 2 3) (+ 2 3)) ((+ 2 3) 5) Ejercicios : Plantear y resolver 10 ejercicios y explicar su significado .

 D %¾  % %%  .

 D %¾  % %%   .

.

 D %¾  %  © nn¾ 9f° f ¾  © nn¾ ½nf¾¾–°€nf  .

.D@   ¯¾¯  n  ½f ° ¯ °  ¾° ° ¯n¾ °  ° ¾f° f f   ¾  n¯f°  f½f n  nf°  ¾  f  ½ © ¯½   n¯f°  .-@  .D@  -f .-D-.

 ° ½fx° ¾¾ ½ © ¯½  %.

% .

%% ° ¾  nf¾  .

 ¾nfh  ½¯   ¯ °  f ¾f   – °   f €°n° ½ n¯° ¾°f€°n°%f¯ °¾ ¾  €°fn¯ f%– ° fh°  f¾ ° °nfn nf¾ f  %.

D@% .%.

%% .

 D % % ¾f ¾°f½ f%% %@D-9D % .

 D % f%  .

 D %nf% %% ¾f ¾°f½ f%%%% %@D-9D % .

 D %nf% %% ¾f% ¾°f½ f%%% %@%   .

   . @.

 D %f¯%  .

%% @ .

 D %f¯% % ¾° © ¯½%%% - .

  .

 D  %n  %%% %% .

 D  %n  %f n%% % .

% .

 D  %n  % %%  .

%% %-9. D  %n  %.%     .-9.

 .

-  .

 D  %n°¾°% %% .

 D  %n°¾ f % %  % .

 D  %n°¾% % % .

 D  %n°¾ f%n°¾ %n°¾% n %%%%% % .

% .

 D  %n°¾ f % n %% % .

% .

 D  %n°¾°°% %-% .

 D  %n°¾°% %- % .

 D  %n°¾%n°¾%n°¾%n°¾°%%%% %%  .

 D  %¾ f % % % .

 D  %€¾ %f n%%  .

 D  % ¾ %%% .

%%  .

 D  % ¾ % %%  .

 D  % ¾ %f n%% % .

% .

 D  %½°%&%%   .

 D  %+%½°%&%%%½°%%    .

 D  %+%½°%&%%%½°%$%%%½°%%     .

 D  %¾ % f %%   .

 D  %½°%   .

 D  %½°%    .

 .

 D % %%%%%%%$%%  .

 D  % %%%%%%%%%&%%  .

 D  % %%½%%%%%%% ½%%+½%%  © nn¾ 9f° f ¾  © nn¾ ½nf¾¾–°€nf       D-.

@I °n ½ fn° ¾ +  & $ ¯f ¯° ¾   .-9.

 D % %+%%&%%  .

 D %+%&%%  .

 D %+%  .

 D  %$% %% %%  .

 D  %+%&%%$%% $ .

 D  % %+%% %+% .

.

 D  %¾ %+%%+%% %%+%%   © nn¾ 9f° f ¾  © nn¾ ½nf¾¾–°€nf   .