Elixir v1.4.2 MapSet View Source

Functions that work on sets.

MapSet is the “go to” set data structure in Elixir. A set can be constructed using MapSet.new/0:

iex> MapSet.new
#MapSet<[]>

A set can contain any kind of elements and elements in a set don’t have to be of the same type. By definition, sets can’t contain duplicate elements: when inserting an element in a set where it’s already present, the insertion is simply a no-op.

iex> set = MapSet.new
iex> MapSet.put(set, "foo")
#MapSet<["foo"]>
iex> set |> MapSet.put("foo") |> MapSet.put("foo")
#MapSet<["foo"]>

A MapSet is represented internally using the %MapSet{} struct. This struct can be used whenever there’s a need to pattern match on something being a MapSet:

iex> match?(%MapSet{}, MapSet.new())
true

Note that, however, the struct fields are private and must not be accessed directly; use the functions in this module to perform operations on sets.

Sets can also be constructed starting from other collection-type data structures: for example, see MapSet.new/1 or Enum.into/2.

Link to this section Summary

Functions

Deletes value from set

Returns a set that is set1 without the members of set2

Checks if set1 and set2 have no members in common

Checks if two sets are equal

Returns a set containing only members that set1 and set2 have in common

Checks if set contains value

Returns a new set

Creates a set from an enumerable

Creates a mapset from an enumerable via the transformation function

Inserts value into set if set doesn’t already contain it

Returns the number of elements in set

Checks if set1’s members are all contained in set2

Converts set to a list

Returns a set containing all members of set1 and set2

Link to this section Types

Link to this section Functions

Link to this function delete(set, value) View Source
delete(t(val1), val2) :: t(val1) when val1: value, val2: value

Deletes value from set.

Returns a new set which is a copy of set but without value.

Examples

iex> set = MapSet.new([1, 2, 3])
iex> MapSet.delete(set, 4)
#MapSet<[1, 2, 3]>
iex> MapSet.delete(set, 2)
#MapSet<[1, 3]>
Link to this function difference(mapset1, mapset2) View Source
difference(t(val1), t(val2)) :: t(val1) when val1: value, val2: value

Returns a set that is set1 without the members of set2.

Examples

iex> MapSet.difference(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1]>
Link to this function disjoint?(map_set1, map_set2) View Source
disjoint?(t, t) :: boolean

Checks if set1 and set2 have no members in common.

Examples

iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([3, 4]))
true
iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([2, 3]))
false
Link to this function equal?(map_set1, map_set2) View Source
equal?(t, t) :: boolean

Checks if two sets are equal.

The comparison between elements must be done using ===.

Examples

iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([2, 1, 1]))
true
iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([3, 4]))
false
Link to this function intersection(map_set1, map_set2) View Source
intersection(t(val), t(val)) :: t(val) when val: value

Returns a set containing only members that set1 and set2 have in common.

Examples

iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[2]>

iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([3, 4]))
#MapSet<[]>
Link to this function member?(map_set, value) View Source
member?(t, value) :: boolean

Checks if set contains value.

Examples

iex> MapSet.member?(MapSet.new([1, 2, 3]), 2)
true
iex> MapSet.member?(MapSet.new([1, 2, 3]), 4)
false

Returns a new set.

Examples

iex> MapSet.new
#MapSet<[]>

Creates a set from an enumerable.

Examples

iex> MapSet.new([:b, :a, 3])
#MapSet<[3, :a, :b]>
iex> MapSet.new([3, 3, 3, 2, 2, 1])
#MapSet<[1, 2, 3]>
Link to this function new(enumerable, transform) View Source
new(Enum.t, (term -> val)) :: t(val) when val: value

Creates a mapset from an enumerable via the transformation function.

Examples

iex> MapSet.new([1, 2, 1], fn x -> 2 * x end)
#MapSet<[2, 4]>
Link to this function put(set, value) View Source
put(t(val), new_val) :: t(val | new_val) when val: value, new_val: value

Inserts value into set if set doesn’t already contain it.

Examples

iex> MapSet.put(MapSet.new([1, 2, 3]), 3)
#MapSet<[1, 2, 3]>
iex> MapSet.put(MapSet.new([1, 2, 3]), 4)
#MapSet<[1, 2, 3, 4]>
Link to this function size(map_set) View Source
size(t) :: non_neg_integer

Returns the number of elements in set.

Examples

iex> MapSet.size(MapSet.new([1, 2, 3]))
3
Link to this function subset?(map_set1, map_set2) View Source
subset?(t, t) :: boolean

Checks if set1’s members are all contained in set2.

This function checks if set1 is a subset of set2.

Examples

iex> MapSet.subset?(MapSet.new([1, 2]), MapSet.new([1, 2, 3]))
true
iex> MapSet.subset?(MapSet.new([1, 2, 3]), MapSet.new([1, 2]))
false
Link to this function to_list(map_set) View Source
to_list(t(val)) :: [val] when val: value

Converts set to a list.

Examples

iex> MapSet.to_list(MapSet.new([1, 2, 3]))
[1, 2, 3]
Link to this function union(map_set1, map_set2) View Source
union(t(val1), t(val2)) :: t(val1 | val2) when val1: value, val2: value

Returns a set containing all members of set1 and set2.

Examples

iex> MapSet.union(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1, 2, 3, 4]>