module Examen20122011 where import Naturales --Ejercicio 5.a ----Funciones Auxiliares suma :: N -> N -> N suma Z Z = Z suma Z (S m) = (S m) suma (S n) Z = (S n) suma (S n) (S m) = S(suma n (S m)) esPar :: N -> Bool esPar Z = True esPar (S x) | esPar x = False | otherwise = True producto :: N -> N -> N producto Z Z = Z producto (S x) Z = Z producto Z (S y) = Z producto (S x) (S y) = suma (S x) (producto (S x) y) -- Función Principal cuadPar :: N -> N cuadPar Z = Z cuadPar (S m) = if esPar (S m) then suma (producto (S m) (S m)) (cuadPar m) else cuadPar m --Ejercicio 5.b ----Función Auxiliar esImpar :: N -> Bool esImpar Z = False esImpar (S x) | esImpar x = False | otherwise = True -- Función Principal listImpar :: N -> [N] listImpar Z = [] listImpar (S m) = if esImpar (S m) then (S m):(listImpar m) else listImpar m --Ejercicio 6.a recorta :: [a] -> N -> [a] recorta [] Z = [ ] recorta [] (S m) = [ ] recorta (x:p) ( Z) = [ ] recorta (x:p) (S m) = x:(recorta p m) ---Por supuesto que esto es sólo un intento de resolución. ---Por supuesto que hay formas mejores de hacerlo. Inténtalo tú.