You are on page 1of 16

Retomando LISP

M-Expression ( en lo que vamos trabajando


S-Expression: Formalismo Lógico Matemático
Átomos, Pares Ordenados, Listas

Átomo que no denotan otra cosa que a sí mismo

Ejplo
12, ABC, NIL, T,V .... etc donde NO DENOTAN por
ejemplo una variable o algo por el estilo
Diagramar

b) (3.((A.B).T) )
c) ((A.3).((2.X).Y))
(3.((A.B).T) )
((A.3).((2.X).Y))
Lista
Una lista o bien es vacía, o bien es un átomo bien
es un par ordenado cuyo 2do elemento es una lista
(forma recursiva)
(3,B,5) ( 3 . ( B . ( 5. NIL) ) )

(17,H,P) Se representa

Representar
( A, (A. B),(C,D,E),(F),())
donde (F) es una lista y () también
(A, (A . B),(C,D,E),(F),())

Completar con igual o distinto


F (F) (( F ))

(A B ) (A,B) (A. B )
¿ qué FUNCIONES podríamos utilizar?
Funciones que aplicadas ....
Exp Simbolicas nos devuelven Exp Simbolicas

Algunas F Basicas ya conocidas son +,- etc


1. plus [ 3;4 ] = + [3; 4]
en general f [ a1 ; b2; c3 ... ] a1 ; b2; c3 son los argumentos ( podría se 0 variables
pero es raro)

También existen comparaciones como `<´


2. menor o leesp donde si es rtdo es verdadero devuelve el
átomo T si es falso devuelve el átomo NIL
leesp [ 3;4 ] = < [3; 4] = T

3. number [5]= T
number[x] = NIL
Predicados

4. eq [ x ; y] T si x e y son atomos iguales


nil si x e y son atomos distintos
 Si x o y no son atomos

T si x es un atomo
5. atom [ x ] NIL si x no es un atomo
selectores
car ( cabeza , first) y cdr ( cola o rest)
Nota: si x es un átomo car[x]= error
car [ (A.B) .C ] = (A.B)
car [ ( A B C ) ] = A

car [ ( ( A B C ) ( D E F ) ) ] = ( A B C )

cdr [ (A.5)] = 5
cdr [ ( A 5 )] = ( 5)
cdr [ ( A B C ) ] = ( B C )
Nota CAR o CDR de un átomo es  (indefinido)
Tambien podemos realizar la « composición» de los dos selectores

cdr[ cdr [ ( ( A B ( C ) ) ( D ( E ) F )) ]
(D(E)F)
((E)F)

( A B C D ) quiero obtener B
Cons ( constructor) una función de 2 variables
cons [ x;y] = ( X.Y) X Y

cons[ (A) ; (B) ] =


( (A) . (B) )
pero el sitema lo devolverá como
( (A) B )
si la 2da componente es NIL obtenemos
cons [ A; NIL ] = ( A.NIL) = (A)

Diagramar de dos maneras (tarea )


cons [ ( A B) ; ( C D) ]

Combinaciones
a) car [ cons [  ;  ]] = 
b) cons [ car [ ; ]] = 
c) cons[ car[  ] ; cdr [ ] ] = 
car[ cdr [ cdr [ (( A B) C D ) ]]]= caddr [(( A B) C D ) ]]]= ¿?
Composicion de funciones eq y car, cdr

eq [ car[ ( A B ) ] ; cdr [ cdr [ ( A B ) ] ] ]

eq [ A; NIL ] = NIL

( NB: NIL es atomo y lista)


la composicion es al estilo f0g f[ g[ ....]]

You might also like