typestar

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

  1. int_of_string_opt abre la cadena sin excepciones.
  2. Result.bind encadena pasos; el primer Error corta.
  3. Un match con function desempaca el lado que haya llegado.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Idiomas del lenguaje; paso 24 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →