Мне нужна карта 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 ;;
Я упустил что-то очевидное?