typestar

Uniones discriminadas en F#

Un conjunto cerrado de formas; el match debe cubrirlas todas.

// A discriminated union is a closed set of shapes; match must
// cover them all -- the compiler audits.
type Inspection =
    | Routine
    | SwarmCells of count: int
    | Queenless of daysSince: int

let respond inspection =
    match inspection with
    | Routine -> "log and close up"
    | SwarmCells n when n > 2 -> sprintf "split now: %d cells" n
    | SwarmCells n -> sprintf "watch closely: %d cells" n
    | Queenless days -> sprintf "order a queen, %d days gone" days

[Routine; SwarmCells 4; Queenless 6]
|> List.iter (respond >> printfn "%s")

Cómo funciona

  1. Los casos cargan datos: SwarmCells of count: int.
  2. Las guardas when parten un caso en severidades.
  3. Agrega un caso y cada match que lo pierda deja de compilar.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
524
Tokens
86
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 79 segundos.

Escribe este fragmento

Paso 2 de 3 en Tipos; paso 14 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →