Можно ли в OCaml определить Map в терминах Set?

Я реализовал представление наборов (сбалансированных деревьев поиска )в OCaml. На самом деле это функтор Makeсигнатуры

module Make :
  functor (T : ORDERED_TYPE) ->
sig
  type elt = T.t
  type t
  val empty : t
  val cons : elt -> t -> t
  val delete : elt -> t -> t
  val mem : elt -> t -> bool
  val cardinal : t -> int
end

, где

 module type ORDERED_TYPE = sig type t val compare : t -> t -> int end

Теперь я хотел бы реализовать словарь, подобный Map, в стандартной библиотеке. Он должен иметь сигнатуру типа

 module Make: functor (T : ORDERED_TYPE) -> sig
    type key = T.t
    type +'a t
   ...
 end

, где t— тип словарей.

Повторная реализация сбалансированных деревьев поиска не элегантна, поэтому я хочу определить словари в терминах множеств, реализованных в виде функтора выше. Могу ли я сделать это?

5
задан Gilles 'SO- stop being evil' 16 September 2012 в 21:00
поделиться