module type EltSig = sig type elt (* type of elements *) (* Comparison function *) val compare : elt -> elt -> int end module type SetSig = sig type elt (* type of elements in the set *) type t (* type of sets *) (* Create a new set *) val create : unit -> t (* Test for membership *) val mem : elt -> t -> bool (* Add an element to the set *) val insert : elt -> t -> t (* Delete an element from the set *) val delete : elt -> t -> t end module MakeSplaySet (Elt : EltSig) : SetSig with type elt = Elt.elt