infix 4 == functor FNSET( type Item val == : Item * Item -> bool ) = struct type Item = Item type Set = Item -> bool val empty = fn _ => false fun member s e = s e fun insert(e, s) = fn e' => if e == e' then true else s e' fun delete(e, []) = fn e' => if e == e' then false else s e' fun union (s, t) = fn e => s e orelse t e fun intersect( s, t) = fn e => s e andalso t e end;