typestar

Seq en OCaml

La secuencia perezosa: infinita hasta que algo tira.

(* Seq is the lazy sequence: infinite until something pulls. *)
let tides = Seq.ints 1 |> Seq.map (fun n -> n * 6 mod 24)

let () =
  tides
  |> Seq.take 4
  |> Seq.iter (Printf.printf "Low tide near %02d:00\n");

  (* unfold grows a sequence from state until None stops it. *)
  let draining = Seq.unfold
      (fun cm -> if cm <= 0 then None else Some (cm, cm - 15)) 60 in
  draining
  |> Seq.map string_of_int
  |> List.of_seq
  |> String.concat " > "
  |> Printf.printf "Pool draining: %s cm\n"

Cómo funciona

  1. Seq.ints 1 nunca termina; Seq.take 4 decide qué corre.
  2. Seq.unfold crece desde el estado hasta que None frena.
  3. List.of_seq materializa cuando la pereza terminó.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
472
Tokens
111
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 111 segundos.

Escribe este fragmento

Paso 3 de 4 en Colecciones; paso 20 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →