functor (Ord : OrderedType) ->
  sig
    type key = Ord.t
    and 'a t
    val create : ?size:int -> unit -> 'a SkipList.S.t
    val clear : 'a SkipList.S.t -> unit
    val size : 'a SkipList.S.t -> int
    val add : 'a SkipList.S.t -> key:SkipList.S.key -> data:'a -> unit
    val find : 'a SkipList.S.t -> SkipList.S.key -> 'a
    val remove : 'a SkipList.S.t -> SkipList.S.key -> unit
    val mem : 'a SkipList.S.t -> SkipList.S.key -> bool
    val iter : 'a SkipList.S.t -> f:(SkipList.S.key -> 'a -> unit) -> unit
    val fold :
      'a SkipList.S.t ->
      f:(SkipList.S.key -> 'a -> 'b -> 'b) -> init:'b -> 'b
  end