typestar

Secuencias perezosas en F#

Lo infinito está bien hasta que algo tira.

// Sequences are lazy: infinite is fine until something pulls.
let broodCycles = Seq.initInfinite (fun day -> day * 21)

broodCycles
|> Seq.skip 1
|> Seq.take 4
|> Seq.iter (printfn "New workers on day %d")

// unfold grows a sequence from state until None says stop.
let syrup = Seq.unfold (fun left ->
    if left <= 0.0 then None
    else Some (left, left - 2.5)) 10.0
printfn "Feedings: %A" (syrup |> Seq.toList)

Cómo funciona

  1. Seq.initInfinite define cada ciclo de cría de una vez.
  2. skip y take deciden cuánto se computa de verdad.
  3. Seq.unfold crece desde el estado hasta que None frena.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
408
Tokens
86
Ritmo de tres estrellas
60 tpm

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

Escribe este fragmento

Paso 3 de 3 en Firmas y pereza; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →