Practico 9 ejercicio 9 función que intercala dos listas ordenadas de enteros -- Intercalar intercalar :: [Int] -> [Int] -> [Int] intercalar [ ] [ ] = [ ] intercalar [ ] (a) = (a) intercalar (a) [ ] = (a) intercalar (a:xs) (b:ys) = if a [a] -> [a] -> [a] intercalag [ ] [ ] = [ ] intercalag [ ] (a) = (a) intercalag (a) [ ] = (a) intercalag (a:xs) (b:ys) = if a list A -> list A (2) intercalar nil nil = nil (3) intercalar nil l = l (4) intercalar l nil = l (5) intercalar (cons a l) (cons b q) = if a Int (7) largo nil = 0 (8) largo (cons a l) = 1 + largo l paso base: largo (intercalar nil q) = largo nil + largo q ---------------- --------- (3) (7) largo ( q ) = 0 + largo q largo q = largo q (probado) paso inductico: Hipotesis: largo(intercalar l q)=largo l + largo q Tésis: largo(intercalar(cons a l) q)=largo(cons a l) + largo q largo(intercalar(cons a l)) = largo(cons a (intercalar l q) (5) = 1 + largo (intercalar l q) = 1 + largo l + largo q - (8) (hip. ind.) | = (probado) | largo(cons a l) + largo q = 1 + largo l + largo q -- (8) Practico 10 ejercicio 9 Dados dos enteros m y n devuelve true si m divide a n y false en caso contrario. -- dividea dividea :: Integer -> Integer -> Bool dividea 0 a = error "No se puede dividir entre 0" dividea a 0 = True dividea a b = if b==a then True else if b