8 local set = { _items = items };
10 function set:add(item)
14 function set:contains(item)
22 function set:remove(item)
26 function set:add_list(list)
27 for _, item in ipairs(list) do
32 function set:include(otherset)
33 for item in pairs(otherset) do
38 function set:exclude(otherset)
39 for item in pairs(otherset) do
51 function union(set1, set2)
53 local items = set._items;
55 for item in pairs(set1._items) do
59 for item in pairs(set2._items) do
66 function difference(set1, set2)
68 local items = set._items;
70 for item in pairs(set1._items) do
71 items[item] = (not set2._items[item]) or nil;
77 function intersection(set1, set2)
79 local items = set._items;
81 set1, set2 = set1._items, set2._items;
83 for item in pairs(set1) do
84 items[item] = (not not set2[item]) or nil;