typestar

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

  1. List.fold toma la semilla explícita; reduce siembra de la cabeza.
  2. Un acumulador de tupla lleva máximo y conteo en una pasada.
  3. List.reduce (*) multiplica la lista entera a un solo valor.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Listas; paso 12 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →