type - switch en haskell
Doble mapa en haskell? (2)
Todavía soy un principiante de haskell. ¿Puedo hacer un mapa doble en haskell?
Por ejemplo, si tengo un [[Char]]
y quiero convertir cada Char
en cada [Char]
a minúsculas, ¿hay una manera fácil de hacer esto en lugar de algo como:
exampleF [] = []
exampleF (x:xs) = (map toLower x) : exampleF xs
De hecho, hay un buen patrón aquí:
map :: (a -> b) -> [a] -> [b]
(map.map) :: (a -> b) -> [[a]] -> [[b]]
(map.map.map) :: (a -> b) -> [[[a]]] -> [[[b]]]
y así
Puede pensar en el map f
, como transformar una función f :: a -> b
en una función en las listas map f :: [a] -> [b]
, así que si desea transformarlo más en una función en las listas de listas, solo necesita usar el map
nuevamente para obtener el map (map f) :: [[a]] -> [[b]]
.
En este caso particular, eso se convierte en:
exampleF = map (map toLower)