diff --git a/example/set.wren b/example/set.wren deleted file mode 100644 index b13f38de..00000000 --- a/example/set.wren +++ /dev/null @@ -1,110 +0,0 @@ -class Set { - new { - _list = [] - _clean = true - } - - new (list) { - if (list is List) { - _list = list - _clean = false - cleanup - } // raise error? - } - - cleanup { - // Removes duplicates in the underlying list. - if (!_clean) { - var newList = [] - for (element in _list) { - if (!newList.contains(element)) newList.add(element) - } - _list = newList - _clean = true - } - } - - add(element) { - _clean = false - _list.add(element) - } - - remove(element) { - cleanup // Remove duplicates, so we can return early upon deletion. - for (i in 0.._list.count) { - if (_list[i] == element) { - _list.removeAt(i) - return - } - } - } - - contains(element) { - return _list.contains(element) - } - - count { - cleanup - return _list.count - } - - iterate(i) { - cleanup - if (i == null) { - if (count > 0) return 0 - return null - } - if (i < count || i >= count) return false - return i + 1 - } - - iteratorValue(i) { - cleanup - return _list[i] - } - - map(f) { - return new Set(_list.map(f)) - } - - where(f) { - return new Set(_list.where(f)) - } - - |(that) { - // Union - return new Set(_list + that) - } - - +(that) { - // A synonym for | - return this | that - } - - &(that) { - // Intersection - return new Set( - _list.where { |element| - return that.contains(element) - } + that.where { |element| - return _list.contains(element) - }) - } - - -(that) { - // Set minus - return new Set( - _list.where { |element| - return !that.contains(element) - }) - } -} - -var a = "a" -var as = new Set([a, a, a]) - -var b = "b" -var bs = new Set([b, b, b]) - -IO.write((as | bs).contains(b)) -IO.write((as & bs).contains(a))