typestar

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

  1. Map.Make (String) fabrica un módulo de mapa entero.
  2. Los add van en pipeline: cada uno devuelve un mapa más grande.
  3. cardinal cuenta; el mapa original nunca cambia.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 2 en Módulos; paso 23 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →