OCaml 语言的核心库带有非常有用的 Map 和 Table 模块。如果我想使用某个内置类型的映射,我知道如何定义自己的类型:
type mytype = int String.Map.t (* A mapping from strings to integers *)
我也知道如何使用多态比较定义自定义地图:
type mytype = (string, string) Map.Poly.t (* A map from strings to strings *)
我不知道如何使用从我自己的类型到我自己的类型的非多态比较来定义自定义映射。例如,假设我有
type row_t = Row of int
type column_t = Column of int
(* I want a map from rows to columns *)
type mymap_t = (row_t, column_t, ???) Map.t
我知道第三个参数应该是比较器,但我不知道在里面放什么:两者都Int.comparator
没有Int.comparator_witness
给出想要的结果。