Pliegues en OCaml
fold_left enhebra un acumulador de cualquier forma.
(* fold_left threads an accumulator; it can be any shape. *)
let depths_cm = [40; 65; 25; 90; 55]
let total = List.fold_left ( + ) 0 depths_cm
(* A tuple accumulator tracks deepest and count in one pass. *)
let deepest, sampled =
List.fold_left
(fun (best, n) d -> (max best d, n + 1))
(0, 0) depths_cm
let () =
Printf.printf "Total depth walked: %d cm\n" total;
Printf.printf "Deepest of %d pools: %d cm\n" sampled deepest;
(* fold_right associates the other way; order shows in strings. *)
let names = List.fold_right (fun d acc -> string_of_int d :: acc)
depths_cm [] in
print_endline (String.concat "/" names)
Cómo funciona
List.fold_left ( + ) 0es la suma canónica.- Un acumulador de tupla lleva lo más hondo y el conteo en una pasada.
fold_rightasocia al revés — el orden se nota en la salida.
Palabras clave y builtins usados aquí
funinlet
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 616
- Tokens
- 118
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 118 segundos.
Paso 3 de 4 en Listas; paso 13 de 29 en Fundamentos del lenguaje.