fold y reduce en F#
Enhebra estado por una lista; el acumulador puede ser lo que sea.
// fold threads state through a list; reduce seeds from the head.
let weights = [28.4; 31.0; 19.7; 35.2]
let total = weights |> List.fold (fun acc w -> acc + w) 0.0
printfn "Total: %.1f kg" total
// The accumulator can be anything -- here a running maximum with count.
let heaviest, inspected =
weights |> List.fold (fun (best, n) w -> (max best w, n + 1)) (0.0, 0)
printfn "Heaviest of %d: %.1f kg" inspected heaviest
let product = [1; 2; 3; 4] |> List.reduce (*)
printfn "Reduce with (*): %d" product
Cómo funciona
List.foldtoma la semilla explícita;reducesiembra de la cabeza.- Un acumulador de tupla lleva máximo y conteo en una pasada.
List.reduce (*)multiplica la lista entera a un solo valor.
Palabras clave y builtins usados aquí
funlet
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 505
- Tokens
- 116
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 107 segundos.
Paso 3 de 3 en Listas; paso 12 de 27 en Fundamentos del lenguaje.