Spec-Zone.ru › OCaml

Модуль Set

module Set: sig .. end

Множества на упорядоченных типах.

Этот модуль реализует структуру данных «множество» при наличии функции полного порядка над элементами множества. Все операции над множествами являются чисто аппликативными (не имеют побочных эффектов). В реализации используются сбалансированные бинарные деревья, поэтому она достаточно эффективна: например, вставка элемента и проверка его принадлежности множеству занимают время, логарифмическое от размера множества.

Функтор Set.Make создаёт реализации для любого типа при наличии функции compare. Например:

     module IntPairs =
       struct
         type t = int * int
         let compare (x0,y0) (x1,y1) =
           match Stdlib.compare x0 x1 with
               0 -> Stdlib.compare y0 y1
             | c -> c
       end

     module PairsSet = Set.Make(IntPairs)

     let m = PairsSet.(empty |> add (2,3) |> add (5,7) |> add (11,13))
   

В результате создаётся новый модуль PairsSet с новым типом PairsSet.t для множеств из элементов типа int * int.

module type OrderedType = sig .. end

Входная сигнатура функтора Set.Make.

module type S = sig .. end

Выходная сигнатура функтора Set.Make.

module Make: functor (Ord : OrderedType) -> S  with type elt = Ord.t

Функтор, создающий реализацию структуры «множество» для типа с полным порядком.

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Set.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API