module type Sett = sig type set val em : set val add : int -> set -> set val query : int -> set -> bool end;; module Set : Sett = struct type set = int list let em = [] let add i s = i::s let rec query i s = match s with [] -> false | f::t -> f = i || query i t end;; Transcript: # let s = Set.em;; val s : Set.set = # let s1 = Set.add 1 s;; val s1 : Set.set = # let s13 = Set.add 3 s1;; val s13 : Set.set = # Set.query 1 s;; - : bool = false # Set.query 1 s13;; - : bool = true # Set.query 2 s13;; - : bool = false # Set.query 3 s13;; - : bool = true #