map, filter, reduce en Julia
El trío funcional, más transformaciones dentro de los pliegues.
exposures = [120, 300, 90, 240, 60]
# map transforms, filter keeps, reduce folds.
minutes = map(s -> s / 60, exposures)
println(minutes)
long_subs = filter(s -> s >= 120, exposures)
println("Long subs: $long_subs")
total = reduce(+, exposures)
println("Total: $total s")
# sum, maximum and friends take a transform as first argument.
println("In minutes: ", sum(s -> s / 60, exposures))
println("Longest: ", maximum(exposures), " s")
Cómo funciona
mapyfiltertoman la función primero.reduce(+, xs)pliega con cualquier operación binaria.sum(f, xs)ymaximum(xs)pliegan y transforman en una llamada.
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 437
- Tokens
- 98
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 84 segundos.
Paso 2 de 3 en Broadcasting; paso 14 de 27 en Fundamentos del lenguaje.