require "map" local fmt = require "fmt" local fruits = new set() fruits:add("apple", "pear", "orange", "banana") fmt.print("fruits : %s", fruits) local fruits2 = new set() fruits2:add("melon", "orange", "lemon", "gooseberry") fmt.print("fruits2 : %s", fruits2) print() fmt.print("fruits contains 'banana' : %s", fruits:contains("banana")) fmt.print("fruits2 contains 'elderberry' : %s", fruits2:contains("elderberry")) print() fmt.print("Union : %s", fruits:union(fruits2)) fmt.print("Intersection : %s", fruits:intersect(fruits2)) fmt.print("Difference : %s", fruits:except(fruits2)) print() fmt.print("fruits2 is a subset of fruits : %s", fruits2:subset(fruits)) print() local fruits3 = fruits:copy() fmt.print("fruits3 : %s", fruits3) print() fmt.print("fruits2 and fruits are equal : %s", fruits2:same(fruits)) fmt.print("fruits3 and fruits are equal : %s", fruits3:same(fruits)) print() local fruits4 = new set() fruits4:add("apple", "orange") fmt.print("fruits4 : %s", fruits4) print() fmt.print("fruits3 is a proper subset of fruits : %s", fruits3:subset(fruits, true)) fmt.print("fruits4 is a proper subset of fruits : %s", fruits4:subset(fruits, true)) print() local fruits5 = new set() fruits5:add("cherry", "blueberry", "raspberry") fmt.print("fruits5 : %s", fruits5) print() fruits5:add("guava") fmt.print("fruits5 + 'guava' : %s", fruits5) fruits5:remove("cherry") fmt.print("fruits5 - 'cherry' : %s", fruits5)