Examen Final - 75.14. Lenguajes Formales - 19/06/07

Cátedra: Monica Kuhn
Fecha: 1º Oportunidad - 1º Cuatrimestre 2007
Día: 19/06/2007

Enunciado

Lambda

Se pide identific variables libres y ligdas, y reducir por orden normal y aplicativo la siguiente expresión lambda (no realizar cambios de variable de mas)

((&w.&x. w) ((&w.x w) t)) ((&w.x) t)

LISP

Dadas dos matrices cuadradas M y N de igual tamaño, definir una función JUNTAR, que reciba ambas matrices como parámetros y devuelva una nueva matriz, con la misma cantidad de filas y el doble de columnas que M y N dispuestos como indican las flechas

(setq n '((a b c d) (e f g h) (i j k l) (m n o p)))

(setq m '((1 2 3 4) (5 6 7 8) (9 10 11 12) (13 14 15 16)))

:materias:75:14:matrizlisp.jpg

Resolución

Lambda

((&w.&x.w) ((&w.xw)t)) ((&w.x)t)

Orden Normal

((&w.&j.w) ((&w.wx)t)) ((&w.x)t)
(&j.((&w.xw)t)) ((&w.x)t)
((&w.xw)t)
xt

Orden Aplicativo

((&w.&x.w) (xt) (x))
((&j.xt) x)
xt

Lisp

(defun juntar (M N)
    (if (null M)
        nil
        (cons (intercalar (invertir (alpha 'car N)) (invertir (car M))) (juntar (cdr M) (alpha 'cdr M)))
    )
)
(defun invertir (L)
    (if (null L)
        nil
        (append (invertir (cdr L)) (list (car L)))
    )
)
(defun intercalar (L1 L2)
    (if (null L1)
        nil
        (append (list (car L1) (car L2)) (intercalar (cdr L1) (cdr L2)))
    )
)
(defun alpha (F L)
    (if (null L)
        nil
        (append (list (funcall F (car L))) (alpha F (cdr L)))
    )
)

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/14/parcial_20071906_1.txt · Última modificación: 2009/06/21 19:53 por dx9
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki