Posiciones de las mayúsculas
Definir la función
| 1 |    posicionesMayusculas :: String -> [Int] | 
tal que (posicionesMayusculas cs) es la lista de las posiciones de las mayúsculas de la cadena cs. Por ejemplo,
| 1 2 3 4 5 |    posicionesMayusculas "SeViLLa"  == [0,2,4,5]    posicionesMayusculas "aAbB"     == [1,3]    posicionesMayusculas "ABCDEF"   == [0,1,2,3,4,5]    posicionesMayusculas "4ysdf4"   == []    posicionesMayusculas ""         == [] | 
Soluciones
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import Data.Char (isUpper) import Data.List (findIndices) -- 1ª solución posicionesMayusculas :: String -> [Int] posicionesMayusculas xs = [n | (n,x) <- zip [0..] xs, isUpper x]  -- 2ª solución posicionesMayusculas2 :: String -> [Int] posicionesMayusculas2 = aux 0 []   where aux n ns [] = reverse ns         aux n ns (y:ys) | isUpper y = aux (n+1) (n:ns) ys                         | otherwise = aux (n+1)    ns  ys -- 3ª solución posicionesMayusculas3 :: String -> [Int] posicionesMayusculas3 = findIndices isUpper |