Мне нужна карта 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, имеет дело с простыми буквами или значениями без использования функций преобразования:
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 ;;
Я пропустил что-то очевидное здесь?