# Sets¶

For any type T, Set(T) is the type of finite sets with elements of type T.

• The empty set is written {}.

• A set with specific elements can be written like this: {1, 2, 3}.

• An ellipsis can be used to generate a range of elements. For example,

Disco> {1 .. 5}
{1, 2, 3, 4, 5}
Disco> {1, 3 .. 9}
{1, 3, 5, 7, 9}

• Set comprehension notation can also be used, for example:

Disco> {x^2 + 1 | x in {1 .. 10}, x > 4}
{26, 37, 50, 65, 82, 101}

• The built-in set function can be used to convert other collections (e.g. lists) to sets:

Disco> set([1,2,3,2,3])
{1, 2, 3}
Disco> set("hello")
{'e', 'h', 'l', 'o'}


The order of elements in a set does not matter, nor does the number of copies of an element. For example,

Disco> {3,3,1,2} == {1,1,2,2,3,3}
true
Disco> {3, 3, 1, 2}
{1, 2, 3}


To check whether a set contains a given element, one can use the elem operator (also written ∈):

Disco> 2 elem {1,2,3}
true
Disco> 5 elem {1,2,3}
false
Disco> 2 ∈ {1,2,3}
true


Sets support various operations, including size, union, intersection, difference, subset, and power set.