Lenguaje LISP.pdf

23
Lenguaje LISP O b j e t o s b á s i c o s :

description

Uploaded from Google Docs

Transcript of Lenguaje LISP.pdf

Page 1: Lenguaje LISP.pdf

Lenguaje LISP

O b j e t o s b á s i c o s :

Page 2: Lenguaje LISP.pdf

S-exp resio n es: -Á to m o s➢

▪ Sím b o lo s.

▪ N úm eros.

▪ Cadena de caracteres.

-Listas

Átom os: se clasifican en:

Sím bolos : cadenas continuas de caracteres (conteniendo al m enos un carácter no➢

n u m érico ).ejem p lo : A G U A , A 12, VA R -A U X , etc. , so n sím b o lo s.

N ú m e r o s: m anipula núm eros enteros sobre 16 bits (perm itiendo calcular en el intervalo➢

[ ], i.e. [-32767, 32767]) y núm eros flotantes sobre 128 bits (perm itiendo

calcular en el intervalo [-1.0F+38, 1.0F+38]).

Cadena de caracteres : U n a c a d e n a d e c a r a c t e r e s e s u n a s u c e s ió n d e c a r a c t e r e s , c o n o s➢ in

huecos, que com ienza y term ina por dobles com illas. Por ejem plo, "A 1 23" es una cadena

de caracteres.

Listas: U n a lis t a e s u n a s u c e s ió n o r d e n a d a , p o s ib le m e n t e v a c ía , d e o b je t o s . S in t á c t ic a m e n t e , s e

com pone de un paréntesis abierto, objetos separados por huecos y un paréntesis cerrado. Por

ejem plo: (a 1 b), (), (a (b (c))) son listas.

Funcionam iento básico del intérprete

Evaluación de los átom os

El valor de un núm ero es el propio núm ero.➢

El valor de un sím bolo es:➢

o E l n ú m e r o q u e t e n g a a s ig n a d o , s i a c t ú a c o m o v a r ia b le n u m é r ic a ; la S - e x p r e s ió n

q u e t e n g a a s ig n a d a , e n c a s o c o n t r a r i o .

El valor de una cadena de caracteres es la propia cadena.➢

Evaluación de las listas

Las listas se interpretan com o llam adas a funciones. El prim er elem ento es el nom bre de la➢

función y el resto son los argum entos. Por ejem plo: la lista (+ 2 3), se interpreta com o la

función + actuando sobre 2 y 3.

Page 3: Lenguaje LISP.pdf

Predicados:

Valores lógicos:➢

Page 4: Lenguaje LISP.pdf

N I L : S u v a lo r e s N I L y r e p r e s e n t a “ lo falso ” . P u e d e e s c r ib ir s e c o m o ( ) .

T: Su valor es T y representa “ lo verdadero ” .

Predicados de tipos➢

(N U LL s) : devuelve T, si s es N IL y N IL, si no.

( A T O M s ) : D e v u e lv e T , s i s e s u n á t o m o y N I L , s i n o .

( A T O M 1 2 ) - - - > T

( A T O M 'A B C ) - - - > T

( A T O M " A B " ) - - - > T

( A T O M A ) - - - > E R R O R

( A T O M '( A B ) ) - - - > N I L

( A T O M N I L ) - - - > T

( S Y M B O L P s ) : D e v u e lv e T , s i s e s u n s ím b o lo y N I L , s i n o lo e s .

( S Y M B O L P 1 2 ) - - - > N I L

( S Y M B O L P 'A B C ) - - - > T

( S Y M B O L P " A B " ) - - - > N I L

( S Y M B O L P A ) - - - > E R R O R

( S Y M B O L P '( A B ) ) - - - > N I L

(SYM BO LP N IL) ---> T

( N U M B E R P s ) : D e v u e lv e T , s i s e s u n n ú m e r o y N I L , s i n o lo e s .

( N U M B E R P 1 2 3 ) - - - > T

(N U M BERP 'A ) ---> N IL

(SETQ A 3) ---> 3

( N U M B E R P A ) - - - > T

( C O N S P s ) : D e v u e lv e T , s i s e s u n a lis t a n o v a c ía y N I L , s i n o lo e s .

( C O N S P 2 3 ) - - - > N I L

( C O N S P '( A B ) ) - - - > T

(CO N SP ()) ---> N IL

Page 5: Lenguaje LISP.pdf

( L I S T P s ) : D e v u e lv e T , s i s e s u n a lis t a y N I L , s i n o lo e s .

(LISTP 23) ---> N IL

Page 6: Lenguaje LISP.pdf

(LISTP '(A B)) ---> T

(LISTP ()) ---> T

Predicados de igualdad➢

( E Q s 1 s 2 ) : D e v u e lv e T s i s 1 y s 2 s o n e l m is m o s ím b o lo y N I L e n c a s o c o n t r a r io .

(EQ 'LISP 'LISP) ---> T

( E Q 'L I S P 'L I S A ) - - - > N I L

( E Q ( C A R '( A B C ) ) 'A ) - - - > T

( E Q 3 3 . 0 ) - - - > N I L

( E Q ( C O N S 'A '( B C ) ) ( C O N S 'A '( B C ) ) ) - - - > N I L

( E Q U A L s 1 s 2 ) : D e v u e lv e T , s i s 1 y s 2 t ie n e n e l m is m o v a lo r y N I L , s i n o t ie n e n e l m is m o

valor.

( E Q U A L 3 ( + 1 2 ) ) - - - > T

N ú m e r o s

Los núm eros adm itidos son enteros(p.e.: 123), decim ales(p.e.: 123.456) y flotantes(p.e.:➢

1.23F+02).

O p e r a c io n e s n u m é r ic a s :➢

Sum a: (+ n1 n2 n3 ... n N ) : d e v u e lv e e l v a lo r d e la s u m a n 1 + n 2 + n 3 + ... + n N . S i N = 0 , d a 0 .

Ejem plos:

(+) ---> 0

(+ 3) ---> 3

(+ 3 7 5) ---> 15

(+ 32000.0 32000) ---> 64000.0

(1+ n) es equivalente a (+ n 1).

R e s t a : ( - n 1 n 2 . . . n N ) : D e v u e lv e e l v a lo r d e n 1 - n 2 - ... - n N . S i N = 1 , d a - n 1 . E je m p lo :

(- 3) ---> -3

(- 123 7 5) ---> 111

(1- n) es equivalente a (- n 1).

Page 7: Lenguaje LISP.pdf

V a lo r A b s o lu t o : ( A B S n ) : D e v u e lv e e l v a lo r a b s o lu t o d e n .

( A B S 3 ) - - - > 3

Page 8: Lenguaje LISP.pdf

(A BS -3.6) ---> 3.6

( * n 1 n 2 . . . n N ) : D e v u e lv e e l v a lo r d e l p r o d u c t o n 1 . n 2 ... n N . S i N = 0 , d a 1 .

(*) ---> 1

(* 3) ---> 3

(* 3 7 5) ---> 105

(* 32000.0 32000) ---> 1.024F+09

(/ n1 n2) : Devuelve el valor de dividir n1 por n2. Ejem plos:

(/ 6 2) ---> 3.0

(/ 5 2) ---> 2.5

( / n ) : E s lo m is m o q u e ( / 1 n ) ; e s d e c ir , d e v u e lv e e l in v e r s o d e n . E je m p lo s :

(/ 2) ---> 0.5

(/ 0.5) ---> 2.0

( M O D n 1 n 2 ) : D e v u e lv e e l r e s t o d e la d iv is ió n e n t e r a d e n 1 p o r n 2 . E je m p lo s :

( M O D 7 2 ) - - - > 1

( M A X n 1 . . . n N ) : D e v u e lv e e l m a y o r v a lo r d e n 1 , . . . , n N . E je m p lo s :

( M A X 3 ) - - - > 3

( M A X 1 2 3 4 5 2 ) - - - > 5

( M A X - 2 . 3 7 0 ) - - - > 7 . 0

(M IN n1 ... nN ) : Devuelve el m enor valor de n1,..., nN . Ejem plos:

(M IN 3) ---> 3

(M IN 1 2 3 4 5 2) ---> 1

(M IN -2.3 7 0) ---> -2.3

Com paraciones num éricas:

( = n 1 . . . n N ) : D e v u e lv e T s i lo s v a lo r e s d e t o d o s lo s a r g u m e n t o s s o n ig u a le s ; N I L , e n c a s o

c o n tra rio . E je m p lo s:

(= 10 (+ 3 7)) ---> T

(= 2 2.0 (+ 1 1)) ---> T

( = 1 2 3 ) - - - > N I L

( = 1 2 1 ) - - - > N I L

Page 9: Lenguaje LISP.pdf

( / = n 1 . . . n N ) : D e v u e lv e T s i lo s v a lo r e s d e t o d o s lo s a r g u m e n t o s s o n d is t in t o s ; N I L , e n c a s o

c o n tra rio . E je m p lo s:

Page 10: Lenguaje LISP.pdf

( / = 1 0 ( + 3 7 ) ) - - - > N I L

( / = 2 2 . 0 ( + 1 1 ) ) - - - > N I L

(/= 1 2 3) ---> T

( / = 1 2 1 ) - - - > N I L

( > = n 1 . . . n N ) : D e v u e lv e T s i n 1 > = ... > = n N ; N I L , e n o t r o c a s o . E je m p lo s :

(>= 4 3 3 2) ---> T

( > = 4 3 3 5 ) - - - > N I L

( > n 1 . . . n N ) : D e v u e lv e T s i n 1 > ... > n N ; N I L , e n o t r o c a s o .

(> 4 3 2 1) ---> T

( > 4 3 3 2 ) - - - > N I L

( < = n 1 . . . n N ) : D e v u e lv e T s i n 1 < = ... < = n N ; N I L , e n o t r o c a s o . E je m p lo s :

(<= 2 3 3 4) ---> T

( < = 5 3 3 4 ) - - - > N I L

( > n 1 . . . n N ) : D e v u e lv e T s i n 1 < ... < nN ; N IL, en otro caso. Ejem plos:

(< 1 2 3 4) ---> T

( < 1 3 3 4 ) - - - > N I L

( Z E R O P n ) e s e q u iv a le n t e a ( = n 0 ) .

( P L U S P n ) e s e q u iv a le n t e a ( > n 0 ) .

( M I N U S P n ) e s e q u iv a le n t e a ( < n 0 ) .

( E V E N P n ) d e v u e lv e T s i n e s p a r ; N I L , e n c a s o c o n t r a r io .

( O D D P n ) d e v u e lv e T s i n e s im p a r ; N I L , e n c a s o c o n t r a r io .

Las funciones trigonom étricas y m atem áticas

(SIN n) : Devuelve el seno de n radianes.

( C O S n ) : D e v u e lv e e l c o s e n o d e n r a d ia n e s .

( T A N n ) : D e v u e lv e la t a n g e n t e d e n r a d ia n e s .

( A S I N n ) : D e v u e lv e e l a r c o s e n o d e n ( e x p r e s a d o e n r a d ia n e s ) .

( A C O S n ) : D e v u e lv e e l a r c o c o s e n o d e n ( e x p r e s a d o e n r a d ia n e s ) .

( A T A N n ) : D e v u e lv e e l a r c o t a n g e n t e d e n ( e x p r e s a d o e n r a d ia n e s ) .

(EXP n) : Devuelve .

(EXPT n1 n2) : Devuelve .

( L O G n ) : D e v u e lv e e l lo g a r it m o n e p e r ia n o d e n .

Page 11: Lenguaje LISP.pdf

( L O G n 1 n 2 ) : D e v u e lv e e l lo g a r it m o d e n 1 e n la b a s e n 2 .

(SQRT n) : Devuelve la raíz cuadrada de n.

Page 12: Lenguaje LISP.pdf

Las funciones de búsqueda en las listas

( C A R l) : D e v u e lv e e l p r im e r e le m e n t o d e l, s i l n o e s N I L ; N I L , s i l e s N I L . E je m p lo s :

( C A R '( A B C ) ) - - - > A

(CA R ()) ---> N IL

( C A R 'A ) - - - > E R R O R

( F I R S T l) : d e v u e lv e e l p r im e r e le m e n t o d e l. E s e q u iv a le n t e a C A R . E je m p lo s :

(FIRST '(A B C)) ---> A

(FIRST ()) ---> N IL

( C D R l) : D e v u e lv e la lis t a f o r m a d a p o r lo s e le m e n t o s d e l, e x c e p t o e l p r im e r o , s i l n o e s N I L ;

N IL si l es N IL. Ejem plos:

(CDR '(A B C)) ---> (B C)

(CDR ()) ---> N IL

( C D R 'A ) - - - > E R R O R

(REST l) : Devuelve la lista form ada por los elem entos de l, excepto el prim ero, si l no es

N IL; N IL si l es N IL. Es equivalente a CDR. Ejem plos:

(REST '(A B C)) ---> (B C)

(REST ()) ---> N IL

( C . . . R l) : E s u n a c o m b in a c ió n d e la s f u n c io n e s C A R y C D R h a s t a 4 n iv e le s . E je m p lo s :

( C A D R '( A B C ) ) - - - > B

( S E C O N D l) : D e v u e lv e e l s e g u n d o e le m e n t o d e l. E s e q u iv a le n t e a C A D R . E je m p lo s :

( S E C O N D '( A B C D ) ) - - - > B

( T H I R D l) : D e v u e lv e e l t e r c e r e le m e n t o d e l. E s e q u iv a le n t e a C A D D R .

(THIRD '(A B C D)) ---> C

( L A S T s ) : D e v u e lv e la lis t a f o r m a d a p o r e l ú lt im o e le m e n t o d e s , s i s e s u n a lis t a

y s, si s no es una lista. Ejem plos:

( L A S T '( A B C ) ) - - - > ( C )

( L A S T 2 3 ) - - - > 2 3

( L E N G T H l) : D e v u e lv e e l n ú m e r o d e e le m e n t o s d e l. E je m p lo s :

( L E N G T H '( A ( B C ) D ) ) - - - > 3

Page 13: Lenguaje LISP.pdf

Las funciones de lectura

( R E A D ) : L e e u n o b je t o d e l c a n a l d e e n t r a d a y d e v u e lv e d ic h o o b je t o . E je m p lo s :

Page 14: Lenguaje LISP.pdf

* ( S E T Q L ( C D R ( R E A D ) ) )

(B C)

* L

(B C)

( R E A D - L I N E ) : L e e u n a lín e a d e l c a n a l d e e n t r a d a y d e v u e lv e d ic h o o b je t o .

Funciones de escritura:

( P R I N T s ) : E s c r ib e e n u n a n u e v a lí n e a e l v a lo r d e s y d e v u e lv e d ic h o v a lo r . E je m p lo :

* ( P R I N T ( + 2 3 ) )

5

5

( P R I N 1 s ) : E s c r ib e e l v a lo r d e s , u s a n d o c a r a c t e r e s d e c o n t r o l. E je m p lo :

* ( P R I N 1 " A " )

"A "

"A "

( F O R M A T T C A D A R G 1 . . . A R G N ) : E s c r ib e la c a d e n a e n C A D e n la p a n t a lla y d e v u e lv e N I L .

C A D p u e d e c o n t e n e r c a r a c t e r e s d e c o n t r o l. A lg u n o d e e llo s s o n l o s s ig u ie n t e s :

• ~% nueva línea.

• ~ D s i e l a r g u m e n t o e s u n n ú m e r o d e c im a l.

• ~ A s i e l a r g u m e n t o e s u n c a r á c t e r A S C I I .

• ~ B s i e l a r g u m e n t o e s u n n ú m e r o b in a r io .

• ~ O s i e l a r g u m e n t o e s u n n ú m e r o o c t a l.

• ~ X s i e l a r g u m e n t o e s u n n ú m e r o h e x a d e c im a l.

E je m p lo s:

* ( F O R M A T T " ~ % L I N E A 1 ~ % L I N E A 2 )

L I N E A 1

L I N E A 2

N IL

* ( F O R M A T T " ~ % E L C U A D R A D O D E ~ D E S ~ D " 3 ( * 3 3 ) )

E L C U A D R A D O D E 3 E S 9

N IL

Page 15: Lenguaje LISP.pdf

* (SETQ L '(A B C))

(A B C)

Page 16: Lenguaje LISP.pdf

* ( F O R M A T T " ~ % L A L O N G I T U D D E L A L I S T A ~ A E S ~ D " L ( L E N G T H L ) )

L A L O N G I T U D D E L A L I S T A '( A B C ) E S 3

N IL

* ( F O R M A T T " ~ % 1 0 E N B I N A R I O E S ~ B Y E N O C T A L E S ~ O " 1 0 1 0 )

1 0 E N B I N A R I O E S 1 0 1 0 Y E N O C T A L E S 1 2

N IL

Aplicaciones:

C L - U S E R 1 > ( + 2 6 9 )

1 7

C L - U S E R 2 > ( - 1 5 3 5 )

7

C L - U S E R 3 > ( * 2 4 6 )

4 8

C L - U S E R 4 > ( / 1 8 3 )

6

C L - U S E R 5 > ( s e t q m i- e d a d 1 2 )

1 2

C L - U S E R 6 > m i- e d a d

1 2

C L - U S E R 7 > ( m in 9 5 8 )

5

C L - U S E R 8 > ( m a x 9 5 8 )

9

C L - U S E R 9 > ( c o n s 2 n il)

(2)

C L - U S E R 1 0 > ( c o n s 4 ( c o n s 6 n il) )

(4 6)

C L - U S E R 1 1 > ( c o n s 'a ( c o n s 'b ( c o n s '( c d e ) n il) ) )

(A B (C D E))

Page 17: Lenguaje LISP.pdf

C L - U S E R 1 2 > ( lis t 'a n a 'r e b e c a 'm a r ia 'lo u r d e s )

( A N A R E B E C A M A R I A L O U R D E S )

Page 18: Lenguaje LISP.pdf

C L - U S E R 1 3 > ( lis t 'p e d r o '( p e p e a n t o n io lu c a s ) )

( P E D R O ( P E P E A N T O N I O L U C A S ) )

C L - U S E R 1 4 > ( a p p e n d '( a b c ) '( d e f ) '( g h i) )

(A B C D E F G H I)

CL- U S E R 1 5 > ( lis t ‘ a ‘ 1 ( / m i- e d a d 2 ) ‘ b ‘ 5 )

(A 1 6 B 5)

C L - U S E R 1 6 > ( f ir s t '( a n a m a r ia p a u la ) )

A N A

C L - U S E R 1 7 > ( f ir s t '( ( m p ) a b ) )

(M P)

C L - U S E R 1 9 > ( r e s t '( a b c d ) )

(B C D)

C L - U S E R 2 0 > ( r e s t '( n ( ( a p ) q ( r s ) ) ) )

(((A P) Q (R S)))

C L - U S E R 2 1 > ( c a r '( ( m p ) a b ) )

(M P)

C L - U S E R 2 2 > ( c d r '( a b c d ) )

(B C D)

C L - U S E R 2 3 > ( c a d a d r '( n ( ( a p ) q ( r s ) ) ) )

Q