A set of unique values.
Insert, remove, and query operations all take O(log n) time.
This implementation is based on
Skinney/elm-dict-exploration,
except that it uses Sorter instead of comparable, so it permits keys
that are not comparable.
Create an empty set.
Create a set with one value.
Add a value to a set.
Remove a value from a set. If the value is not found, no changes are made.
Determine if a set is empty.
Determine if a value is in a set.
Determine the number of elements in a set.
Get the union of two sets. Keep all values.
Get the intersection of two sets. Keeps values that appear in both sets.
Keep a value when it appears in the original set
but not in the other set.
The original set's Sorter will be used.
Convert a set into a list, sorted from lowest to highest.
Convert a list into a set, removing any duplicates.
Map a function onto a set, creating a new set with no duplicates.
Fold over the values in a set, in order from lowest to highest.
Fold over the values in a set, in order from highest to lowest.
Only keep elements that pass the given test.
import Set exposing (Set)
numbers : Set Int
numbers =
Set.fromList [ -2, -1, 0, 1, 2 ]
positives : Set Int
positives =
Set.filter (\x -> x > 0) numbers
-- positives == Set.fromList [1,2]Create two new sets. The first contains all the elements that passed the given test, and the second contains all the elements that did not.
Represents a set of unique values. So
(Set Int)is a set of integers and(Set String)is a set of strings.