Course of Raku / Advanced / More about built-in types

Sets, bags, and mixes

Besides arrays and hashes, Raku offers a few specialised containers for collections of values. The simplest is the Set — an unordered collection of distinct values, where each value is either a member or not, and duplicates are ignored.

You create a set with the set routine. Repeated values collapse into one:

my $s = set(1, 2, 3, 2, 1);
say $s.elems; # 3

Even though five numbers were passed in, the set has only three elements, because 1 and 2 appeared more than once.

The main question you ask a set is whether a value belongs to it. The operator (read as “is an element of”) returns a Boolean:

say 2set(1, 2, 3); # True
say 9set(1, 2, 3); # False

If you prefer to stay with plain ASCII, the same operator can be written as (elem):

say 2 (elem) set(1, 2, 3); # True

The following topics show how to combine sets, and introduce bags and mixes, which are close relatives of the set.

Topics in this section

Practice

Complete the 1 quiz that covers the contents of this section.

Exercises

This section contains 3 exercises. Examine all the topics of this section before doing the coding practice.

  1. Count the distinct
  2. Common elements
  3. Count in a bag

Course navigation

Solution: Day of the week   |   Set operations