Composición y @@ en OCaml
Arma funciones desde funciones; @@ ahorra el último paréntesis.
(* @@ applies without parentheses; composition is a one-liner away. *)
let compose f g x = f (g x)
let cm_of_m m = m *. 100.0
let readable cm = Printf.sprintf "%.0f cm" cm
let describe = compose readable cm_of_m
let () =
print_endline (describe 0.65);
print_endline (describe 1.2);
(* @@ saves the closing paren on the last argument. *)
print_endline @@ describe 0.08;
Printf.printf "Deep end: %s\n" @@ readable @@ cm_of_m 1.5
Cómo funciona
compose f g x = f (g x)es la definición completa.- El
describecompuesto aplica como cualquier función. print_endline @@ describe 0.08ahorra los paréntesis envolventes.
Palabras clave y builtins usados aquí
let
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 428
- Tokens
- 84
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 78 segundos.
Paso 3 de 4 en Funciones; paso 6 de 29 en Fundamentos del lenguaje.