ventajas reasonml online desventajas caracteristicas ocaml

reasonml - Mapa OCaml de teclas int:: ¿dónde está el módulo int ''simple'' para usar con el functor Map.Make?



ocaml online (4)

Necesito un mapa OCaml con claves de tipo int, así que estoy usando Map.Make para crear uno. Sin embargo, parece que los módulos estándar ''solo'' proporcionan módulos como Big_int , Int32 , Int64 y Nativeint que requieren conversiones. Así que tengo que hacer cosas como:

module IntMap = Map.Make(Int32) let a_map = IntMap.add (Int32.of_int 0) "zero" IntMap.empty ;;

... que preferiría evitar o definir mi propio módulo de Int tonto, tratar con literales o valores int simples sin requerir funciones de conversión:

module Int = struct type t = int let compare x y = if x < y then -1 else if x > y then 1 else 0 end ;; module IntMap = Map.Make(Int) let a_map = IntMap.add 0 "zero" IntMap.empty ;;

¿Me estoy perdiendo algo obvio aquí?


La forma más sencilla de tener un mapa int es hacer lo siguiente:

module IntMap = Map.Make(struct type t = int let compare = compare end)


No creo que te estés perdiendo nada, no hay un módulo estándar para esto. Creo que el módulo BatInt de OCaml Batteries Included hace lo que usted desea.

(Editado para agregar: es verdad, ¡yo mismo uso el método sugerido por Thomas!)



Si ya usa containers (lo cual creo que es un poco más común desde que se escribieron las respuestas anteriores), puede usar los módulos "primitivos" de los contenedores junto con el módulo CCMap para lograr esto, por ejemplo:

module ByInt = CCMap.Make(CCInt)