result en OCaml
Ok o Error, con bind para mantener el pipeline en la vía feliz.
(* result carries Ok or Error; bind keeps the pipeline honest. *)
let parse_depth raw =
match int_of_string_opt raw with
| Some cm -> Ok cm
| None -> Error ("unreadable: " ^ raw)
let classify cm =
if cm < 10 then Error (Printf.sprintf "%d cm is a puddle" cm)
else Ok (Printf.sprintf "%d cm accepted" cm)
let () =
["65"; "n/a"; "4"]
|> List.map (fun raw -> Result.bind (parse_depth raw) classify)
|> List.iter (function
| Ok note -> print_endline ("OK: " ^ note)
| Error why -> print_endline ("SKIP: " ^ why))
Cómo funciona
int_of_string_optabre la cadena sin excepciones.Result.bindencadena pasos; el primer Error corta.- Un match con
functiondesempaca el lado que haya llegado.
Palabras clave y builtins usados aquí
elsefunfunctionifletmatchthenwith
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 510
- Tokens
- 124
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 124 segundos.
Paso 1 de 3 en Idiomas del lenguaje; paso 24 de 29 en Fundamentos del lenguaje.