map y filter en Haskell
map reescribe cada elemento, filter conserva los que pasan y (.) encadena los dos en un pipeline.
-- map applies a named function to every element, one at a time
restock :: Int -> Int
restock n = n + 12
-- a section is a half-applied operator: (< 5) still wants a left side
lowStock :: [Int] -> [Int]
lowStock = filter (< 5)
-- (.) chains them: filter runs first, then map, reading right to left
topUp :: [Int] -> [Int]
topUp = map restock . lowStock
main :: IO ()
main = do
let shelf = [2, 8, 4, 11, 1] :: [Int]
print (map (* 2) shelf)
print (lowStock shelf)
print (topUp shelf)
Cómo funciona
map restockle entrega cada elemento a la funciónrestock, que le suma 12.lowStock = filter (< 5)usa una sección: un operador con un lado ya dado, esperando todavía el otro.topUp = map restock . lowStockfiltra antes de mapear, ymainaplica además la sección en líneamap (* 2).
Palabras clave y builtins usados aquí
IOIntdolet
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 484
- Tokens
- 89
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 71 segundos.
Paso 1 de 3 en Orden superior; paso 13 de 27 en Fundamentos del lenguaje.