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
3 番目の引数がコンパレータであることは理解していますが、内部に何を入れればよいかわかりませんInt.comparator_witness
。