UTNianos

Versión completa: ayuda ejercicio de paradigmas Funcional
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas,
consulta, teniendo una listado de barbaros con la siguiente info:

data Barbaro = Barbaro Nombre Fuerza [Habilidad] [Pertenencia] deriving Show

donde [Habilidad] es una lista de strings como por ejemplo ["tejer","correr", "saltar"]

como se podrìa definir una función para saber si sus habilidades contienen más de 3 vocales y comienzan con mayúscula, me ayudan?


Saludoooos
Hola, para definir esa funcion primero necesitarias una funcion que te diga si un caracter es vocal, la cual podes hacerla usando pattern matching o usando un elem, luego otra funcion que te diga si una palabra empieza con mayuscula (se me ocurre utililzar un head y combinarla con una similar a la que te dice si es vocal solo que en vez verifica si la letra esta en mayuscula).
Para contar las vocales un lenght.filter y juntando todo tendrias tu funcion definida. Acordate siempre de delegar de esta forma se reducen los problemas a resolver y es mas facil encararlos Saludos! thumbup3
Fijate si te sirve esto:


contarVocales = length.concatenar.map (filter (\x -> (x == 'a') || (x =='e') || (x =='i') || (x =='o') || (x =='u')))

concatenar [] = []
concatenar (x:xs) = x ++ concatenar xs

Otra opción:



--vocales = ['a', 'e', 'i', 'o', 'u']
vocales = "aeiou"
--esVocal letra = elem letra vocales
esVocal = flip elem vocales



Luego, para saber si un caracter es mayúscula o no, podés importar Data.Char



import Data.Char

-- Dada una palabra, indica si comienza con mayúscula
--comienzaConMayuscula palabra = (isUpper.head) palabra
comienzaConMayuscula = isUpper.head

URLs de referencia