structure IntSet : SetSig = struct type Item = int type Set = Item list exception Select val empty = [] fun isEmpty [] = true | isEmpty _ = false fun member [] e = false | member (h :: t) e = (e = h) orelse member t e; fun insert(e, s) = if member s e then s else e :: s; fun delete(e, []) = [] | delete(e, h::t) = if e = h then t else h :: (delete(e, t)); fun select [] = raise Select | select (h :: t) = (h, t) fun union([] , s) = s | union(h::t, s) = insert(h, union(t, s)); fun intersect([], s) = [] | intersect(h::t, s) = if member s h then h :: intersect(t, s) else intersect(t, s); end;