The --/2
operator allows you to subtract two lists, that is, remove all
elements in the right list from the left list. Each occurrence of an
element is removed if there is a corresponding element. If there is no
corresponding element, it is ignored.
Here are some examples.
> [1, 2, 3] -- [2, 4]
[1, 3]
> [:a, :b, :c, :a, :d, :a] -- [:a, :a]
[:b, :c, :d, :a]
This kind of list operation is not particularly efficient, so for large lists it can be quite slow. The following example took several minutes to run.
> Enum.into(1..1000000, []) -- Enum.into(2..1000000, [])
[1]
To achieve a true set difference, you'll note that the docs for this
operator recommend checking out MapSet.difference/2
.
See h Kernel.--
for more details.