OCaml - 如何在set中保持int +我自己的类型

时间:2013-12-05 09:20:19

标签: set ocaml

我想保留一下:

( int * int * (my_own_type) )

我想通过(int * int)比较元素wolud - my_own_set对顺序没有影响。我需要的只是快速搜索元素。

怎么做?

1 个答案:

答案 0 :(得分:2)

您需要制作一个能够进行所需比较的模块(改编自https://stackoverflow.com/a/4277832):

module MyTypeOrdered = struct
  type t = int * int * (my_own_type)
  let compare (x1, y1, _) (x2, y2, _) = compare (x1, y1) (x2, y2)
end

module MyTypeSet = Set.Make(MyTypeOrdered)

使用地图非常相似

module IntInt = struct
  type t = int * int
  let compare = compare
end

module MyTypeMap = Map.Make(IntInt)

或只是

module MyTypeMap = Map.Make(struct type t = int * int let compare = compare end)