Cátedra: Monica Kuhn
Fecha: 1º Oportunidad - 1º Cuatrimestre 2007
Día: 19/06/2007
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)
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)))
((&w.&x.w) ((&w.xw)t)) ((&w.x)t)
((&w.&j.w) ((&w.wx)t)) ((&w.x)t) (&j.((&w.xw)t)) ((&w.x)t) ((&w.xw)t) xt
((&w.&x.w) (xt) (x)) ((&j.xt) x) xt
(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))) ) )