parent $libraries object $set var $root child_index 0 var $root owners [$set] var $root owned [$set] var $root fertile 0 var $root inited 1 var $root manager $set var $root writable [$set] var $root readable ['parameters, 'methods, 'code] var $root dbref 'set method difference arg [args]; var set, list, element; // Usage: diff(set 1, set 2, ..., set n) // Returns all elements of set 1 that are not in sets 2..n if (!args) return []; set = args[1]; for list in (delete(args, 1)) { for element in (list) set = setremove(set, element); } return set; . method contains arg [args]; var super, list, element; // True if the first list given is a superset of all subsequent lists. // False otherwise. [] is a superset of [] and nothing else; anything is // a superset of []. If only one list is given, return true. super = args ? args[1] | []; for list in (delete(args, 1)) { for element in (list) { if (!(element in super)) return 0; } } return 1; . method equal arg set1, set2; var element; // True if the two lists given contain the same elements. // False otherwise. while (set1) { element = set1[1]; if ((!element) in set2) return 0; while (element in set2) set2 = setremove(set2, element); while (element in set1) set1 = setremove(set1, element); } return set2 == []; .