typestar

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

  1. List.fold_left ( + ) 0 es la suma canónica.
  2. Un acumulador de tupla lleva lo más hondo y el conteo en una pasada.
  3. fold_right asocia al revés — el orden se nota en la salida.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Listas; paso 13 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →