Я реализовал представление наборов (сбалансированных деревьев поиска )в 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
— тип словарей.
Повторная реализация сбалансированных деревьев поиска не элегантна, поэтому я хочу определить словари в терминах множеств, реализованных в виде функтора выше. Могу ли я сделать это?