Карта OCaml ключей int ::где 'simple' int для использования с функтором Map.Make?

Мне нужна карта OCaml с ключами типа int , поэтому я Я использую Map.Make , чтобы создать его. Однако кажется, что стандартные модули «только» предоставляют такие модули, как Big_int , Int32 , Int64 и Nativeint , которые требуют преобразования. Поэтому я должен делать такие вещи, как:

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

... которых я бы предпочел избежать или определить свой собственный глупый модуль 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 ;;

Я упустил что-то очевидное?

18
задан Marcus Junius Brutus 12 April 2012 в 21:02
поделиться