int键的OCaml映射:: where是用于Map.Make仿函数的'simple'int模块?

Mar*_*tus 18 ocaml

我需要一个带有int类型键的OCaml映射,所以我使用Map.Make创建一个.然而,似乎标准模块 "仅"提供需要转换的Big_int,Int32,Int64Nativeint等模块.所以我必须做的事情如下:

module IntMap = Map.Make(Int32) 
let a_map = IntMap.add (Int32.of_int 0) "zero" IntMap.empty ;;
Run Code Online (Sandbox Code Playgroud)

...我宁愿避免或定义我自己的愚蠢的Int模块确实处理简单的int文字或值而不需要转换函数:

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 ;;
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?

Tho*_*mas 27

拥有int映射的最简单方法是执行以下操作:

module IntMap = Map.Make(struct type t = int let compare = compare end)
Run Code Online (Sandbox Code Playgroud)


Jef*_*eld 7

我不认为你错过任何东西,没有标准的模块.我相信OCaml Batteries IncludedBatInt模块可以满足您的需求.

(编辑补充:这是真的,我自己使用托马斯建议的方法!)