Functores en OCaml
Funciones a nivel de módulo: Map.Make arma un mapa desde un orden.
(* A functor is a module-level function: give it a module, get one
back. Map.Make builds a map keyed by any ordered type. *)
module PoolMap = Map.Make (String)
let counts =
PoolMap.empty
|> PoolMap.add "north" 12
|> PoolMap.add "ledge" 31
|> PoolMap.add "cove" 5
let () =
Printf.printf "Ledge count: %d\n" (PoolMap.find "ledge" counts);
Printf.printf "Pools mapped: %d\n" (PoolMap.cardinal counts);
(* Adds return new maps; the old binding is untouched. *)
let more = PoolMap.add "shelf" 9 counts in
Printf.printf "Before %d, after %d\n"
(PoolMap.cardinal counts) (PoolMap.cardinal more);
PoolMap.iter (Printf.printf "%s=%d ") counts;
print_newline ()
Cómo funciona
Map.Make (String)fabrica un módulo de mapa entero.- Los add van en pipeline: cada uno devuelve un mapa más grande.
cardinalcuenta; el mapa original nunca cambia.
Palabras clave y builtins usados aquí
inletmodule
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 653
- Tokens
- 130
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 130 segundos.
Paso 2 de 2 en Módulos; paso 23 de 29 en Fundamentos del lenguaje.