(phixonline)--> with javascript_semantics function is_element(object x, sequence set) return find(x,set)!=0 end function function set_union(sequence set1, set2) for i=1 to length(set2) do if not is_element(set2[i],set1) then set1 = append(set1,set2[i]) end if end for return set1 end function function set_intersection(sequence set1, set2) sequence res = {} for i=1 to length(set1) do if is_element(set1[i],set2) then res = append(res,set1[i]) end if end for return res end function function set_difference(sequence set1, set2) sequence res = {} for i=1 to length(set1) do if not is_element(set1[i],set2) then res = append(res,set1[i]) end if end for return res end function function set_subset(sequence set1, set2) for i=1 to length(set1) do if not is_element(set1[i],set2) then return false end if end for return true end function function set_equality(sequence set1, set2) if length(set1)!=length(set2) then return false end if return set_subset(set1,set2) end function --test code: ?is_element(3,{1,2,3}) -- 1 ?is_element(4,{1,2,3}) -- 0 ?set_union({1,2,3},{3,4,5}) -- {1,2,3,4,5} ?set_intersection({1,2,3},{3,4,5}) -- {3} ?set_difference({1,2,3},{3,4,5}) -- {1,2} ?set_subset({1,2,3},{3,4,5}) -- 0 ?set_subset({1,2},{1,2,3}) -- 1 ?set_equality({1,2,3},{3,4,5}) -- 0 ?set_equality({1,2,3},{3,1,2}) -- 1