Variantes en OCaml
Un conjunto cerrado de formas; el match debe cubrirlas todas.
(* A variant type is a closed set of shapes; match covers them all. *)
type observation =
| Routine
| Rare of string
| Damage of int (* percent of the pool disturbed *)
let respond = function
| Routine -> "log and move on"
| Rare species -> "photograph the " ^ species
| Damage pct when pct > 50 -> Printf.sprintf "report: %d%% lost" pct
| Damage pct -> Printf.sprintf "note %d%% disturbance" pct
let () =
[Routine; Rare "octopus"; Damage 70; Damage 15]
|> List.iter (fun o -> print_endline (respond o))
Cómo funciona
- Los casos cargan datos:
Rare of string,Damage of int. - Las guardas
whenparten un caso por severidad. - Agrega un caso y cada match incompleto deja de compilar.
Palabras clave y builtins usados aquí
funfunctionintletofstringtypewhen
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 506
- Tokens
- 96
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 89 segundos.
Paso 3 de 3 en Coincidencia de patrones; paso 10 de 29 en Fundamentos del lenguaje.