Pregunta 1 (define (alterna-f f1 f2) (lambda (lista) (if (null? lista) ‘() (cons (f1 (car lista)) ((alterna-f f2 f1) (cdr lista)))))) Pregunta 2 (define (diff-pt ptree1 ptree2) (cond ((empty-ptree? ptree1) ptree1) ((leaf-ptree? ptree1) (if (equal? ptree1 ptree2) '() (list (cons ptree1 ptree2)))) (else (append (diff-pt (car ptree1) (car ptree2)) (diff-pt (cdr ptree1) (cdr ptree2)))))) Pregunta 3 (define (anchura-forest forest) (if (null? forest) 0 (max (length forest) (anchura-forest (get-next-level forest))))) (define (get-next-level forest) (if (null? forest) ‘() (append (children (car forest)) (get-next-level (cdr forest))))) Pregunta 4 a) (define (make-dlist) (cons '*d-list* '())) (define (add-dlist! dlist x) (let ((node-x (cons x dlist))) (set-cdr! dlist (cons node-x '())))) b) (define (insert-dlist! dlist x) (if (empty-dlist? dlist) (add-dlist! dlist x) (let* ((node-x (cons x dlist)) (node-list (cons node-x (cdr dlist)))) (begin (set-cdr! dlist node-list) (set-cdr! (car (cdr node-list)) node-list))))) c) (define (list-to-dlist lista) (if (null? lista) (make-dlist) (let ((dlist (list-to-dlist (cdr lista)))) (insert-dlist! dlist (car lista)) dlist))) Pregunta 5 a) (define (make-fecha dia mes año) (list dia mes año)) (define (dia-fecha fecha) (car fecha)) (define (mes-fecha fecha) (cadr fecha)) (define (año-fecha fecha) (caddr fecha)) (define (fecha-to-string fecha formato) (let (proc (get-primitive formato)) (if proc (proc fecha)))) b) (define (añadir-formato formato proc) (put-primitive formato proc)) (define (barras-4-digitos fecha) (string-append (fecha-dia fecha) (string-append "/" (string-append (fecha-mes fecha) (string-append "/" (string-append (fecha-año fecha) "")))))) (añadir-formato 'barras-4-digitos barras-4-digitos) Pregunta 6