Академический Документы
Профессиональный Документы
Культура Документы
1.- Supuesto evaluada la expresión (setq X (list '(+ 1 2))) que se obtiene al evaluar las
expresiones simbólicas siguientes:
Expresiones Evaluación
X ((+ 1 2))
(eval X) Error
2.- Al evaluar las expresiones siguientes alguna da error. Di cual de ellas es, e indica la
causa. Di el resultado que se obtiene al evaluar las otras.
Expresiones Evaluación
(eval (car (cdr '(a b c)))) Error
(eval (cons 'quote '((1 2 3)) )) (1 2 3)
(eval (cons 'quote (list (list 'A 'B)))) (a b)
(setq a 'b)
(setq b (list a 'b))
Epresiones Evaluación
(list x y (eval x) c (eval c)) (c c (+ 3 7) (+ 3 7) 10)
(eval (append (eval y) (list (eval (eval y))))) 20
SOLUCIÓN
(defun s2matrices (n m)
(mapcar 's2vectores n m))
(s2matrices '((1 0 2) (9 3 8) (7 4 6)) '((7 4 6) (9 3 8) (1 0 2)))
SOLUCIÓN
Explica que hace, sabiendo que L es una lista. Pon algunos ejemplos y da un
nombre que consideres apropiado a dicha función INCOGNITA.
SOLUCIÓN
X debe se una función con dos argumentos. L1 y L2 deben ser listas cuyos
elementos sean argumentos válidos para la función X.
Al aplicar MAPCAR la función X a L1 y L2 hasta que una de ellas termine,
MAPCAR devuelve la lista formada por los sucesivos valores dados por X.
La función auxiliar actúa sobre la lista devolviendo la lista que se obtiene al
duplicar cada uno de los elementos, introduciendo cada pareja en una lista.
SOLUCIÓN
a)
(setq figura '((es-un cubo) (color verde) (tamaño grande) (encima-de mesa)))
b)
(setf (get 'p1 'color) 'rojo)
(setf (get 'p1 'es) 'cubo)
(setf (get 'p1 'esta) 'mesa)
(setf (get 'p1 'tiene) 'picos)
Escribe una expresión que devuelva el teléfono de la EUI sin utilizar el símbolo EUI.
SOLUCIÓN
Escribe una expresión lisp utilizando la función APPLY tal que el valor de su
evaluación sea el área del círculo FIGURA1 es decir, 18.84. En la expresión no puede
aparecer el átomo CIRCULO.
SOLUCIÓN
(apply (get (get 'FIGURA1 'FORMULA) 'AREA) (list (get 'FIGURA1 'RADIO)))
6. Evaluadas las siguientes expresiones:
(setq AMIGOS '((alberto (luis)) (andres (juan charlie jose)) (maria (andres alberto
miguel)) (pedro (marcos)) ))
(setf (get 'charlie 'es-un) 'perro)
(setf (get 'juan 'es-un) 'hombre)
(setf (get 'jose 'es-un) 'hombre)
(setf (get 'hombre 'tipo) 'mamifero)
(seft (get 'perro 'tipo) 'mamifero)
(setf (get 'hombre 'piensa) T)
(setf (get 'perro 'piensa) NIL)
(setf (get 'mamifero 'clase-de) 'animal)
(setf (get 'animal 'se-mueve) T)
Se pide:
a) Construir una expresión que diga si juan piensa, sin utilizar el símbolo"juan".
b) Construir una expresión que devuelva todos los amigos, consideramos que la amistad
no tiene las propiedades ni simétrica ni transitiva.
c) Construir una expresión que diga si charlie se mueve
d) Construir una expresión que diga si José es un animal
e) Construir una expresión que compruebe si algún amigo de Andrés piensa, sin utilizar
los nombres de sus amigos.
SOLUCIÓN
a)
(get 'hombre 'piensa) -> (get (get 'juan 'es-un) 'piensa) ->
(assoc 'andres amigos)
b)
(mapcar 'car amigos)
c)
(get 'animal 'se-mueve)
(get (get 'mamifero 'clase-de) 'se-mueve)
(get (get (get 'perro 'tipo) 'clase-de) 'se-mueve)
(get (get (get (get 'charlie 'es-un) 'tipo) 'clase-de) 'se-mueve)
d)
(equal (get 'mamifero 'clase-de) 'animal)
(equal (get (get 'hombre 'tipo) 'clase-de) 'animal)
(equal (get (get (get 'jose 'es-un) 'tipo) 'clase-de) 'animal)
e)
(get 'hombre 'piensa)
(get (get 'juan 'es-un) 'piensa)
(eval (cons 'or
(mapcar '(lambda (x) (get (get x 'es-un) 'piensa))
(cadr (assoc 'andres amigos)) ) ))
7. Supuesto evaluadas las expresiones siguientes:
(setq l '((base 2) (altura 5)))
(defun analiza (x y z)
(cond
((assoc yx) x)
(t (append x (list (list y z)))) ))
Di que se obtiene al evaluar secuencialmente:
1) (analiza l 'altura 3)
2) L
3) (analiza l 'color 'rojo)
4) L
Construir una expresión que recupere la función y los argumentos de las dos listas de
propiedad anteriores y devuelva el resultado de aplicar la función a dichos argumentos.
SOLUCIÓNES POSIBLES
(apply (get 'problema 'función) (get 'proplema 'argumento))
(eval (cons (get 'problema 'funcion) (get 'problema 'argumento)))
(eval (append (list (get 'problema 'funcion) (get 'problema 'argumento))))
(eval (cons 'funcall (cons (quote (get 'problema 'funcion))
(get 'problema 'argumentos))))
SOLUCIÓN
Se pide:
SOLUCIÓN
a)
(defun expande1 (frase diccionario)
(cond
((null frase) nil)
((assoc (car frase) diccionario) (append (cadr (assoc (car frase)
diccionario))
(expande1 (cdr frase)
diccionario) ))
(t (cons (car frase) (expande1 (cdr frase) diccionario) )) ))
b)
(defun expande (frase diccionario &optional (n 1))
(cond
(( equal n 1) (expande1 frase diccionario))
(t (expande (expande1 frase diccionario) diccionario (- n 1))) ))