Lenguaje LISP.pdf
-
Upload
giancarlo-espinoza -
Category
Documents
-
view
100 -
download
0
description
Transcript of Lenguaje LISP.pdf
Lenguaje LISP
O b j e t o s b á s i c o s :
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.
Predicados:
Valores lógicos:➢
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
( 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
(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).
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
(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
( / = 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:
( / = 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 .
( 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.
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
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 :
* ( 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
* (SETQ L '(A B C))
(A B C)
* ( 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))
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 )
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