(* TEST * expect *) open Set.Make(String);; [%%expect{| type elt = String.t type t = Set.Make(String).t val empty : t = val is_empty : t -> bool = val mem : elt -> t -> bool = val add : elt -> t -> t = val singleton : elt -> t = val remove : elt -> t -> t = val union : t -> t -> t = val inter : t -> t -> t = val disjoint : t -> t -> bool = val diff : t -> t -> t = val compare : t -> t -> int = val equal : t -> t -> bool = val subset : t -> t -> bool = val iter : (elt -> unit) -> t -> unit = val map : (elt -> elt) -> t -> t = val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a = val for_all : (elt -> bool) -> t -> bool = val exists : (elt -> bool) -> t -> bool = val filter : (elt -> bool) -> t -> t = val filter_map : (elt -> elt option) -> t -> t = val partition : (elt -> bool) -> t -> t * t = val cardinal : t -> int = val elements : t -> elt list = val min_elt : t -> elt = val min_elt_opt : t -> elt option = val max_elt : t -> elt = val max_elt_opt : t -> elt option = val choose : t -> elt = val choose_opt : t -> elt option = val split : elt -> t -> t * bool * t = val find : elt -> t -> elt = val find_opt : elt -> t -> elt option = val find_first : (elt -> bool) -> t -> elt = val find_first_opt : (elt -> bool) -> t -> elt option = val find_last : (elt -> bool) -> t -> elt = val find_last_opt : (elt -> bool) -> t -> elt option = val of_list : elt list -> t = val to_seq_from : elt -> t -> elt Seq.t = val to_seq : t -> elt Seq.t = val to_rev_seq : t -> elt Seq.t = val add_seq : elt Seq.t -> t -> t = val of_seq : elt Seq.t -> t = |}] let e = empty;; [%%expect{| val e : t = |}] open struct let x = singleton "hidden" end;; [%%expect{| val x : t = |}];; elements (union x (of_list ["a"; "b"]));; [%%expect{| - : elt list = ["a"; "b"; "hidden"] |}] let f = let open Set.Make(Int32) in let e2 = empty in let open struct let y = 3 end in (e, e2, y);; [%%expect{| val f : t * Set.Make(Int32).t * int = (, , 3) |}] module type S = sig open Set.Make(Bool) type nonrec t = t end;; [%%expect{| module type S = sig type nonrec t = Set.Make(Bool).t end |}] let hd _ = ();; [%%expect{| val hd : 'a -> unit = |}] open (List : sig val map : ('a -> 'b) -> 'a list -> 'b list end);; [%%expect{| val map : ('a -> 'b) -> 'a list -> 'b list = |}] let l = map succ [0;1;2;3] let () = hd l;; [%%expect{| val l : int list = [1; 2; 3; 4] |}] let y = map succ [];; [%%expect{| val y : int list = [] |}]