aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDoug Tykocki <tykockda@gmail.com>2023-12-28 09:54:40 -0500
committerLouis Pilfold <louis@lpil.uk>2024-01-04 12:29:15 +0000
commitc153d1ab16d19724e47cc5c160b60b45cda195d2 (patch)
treead5b72918e9c09eefab8ed1afb1969a8099fab7c /src
parentf88b8321a1b323b03951fc1c9575d8269cd910b6 (diff)
downloadgleam_stdlib-c153d1ab16d19724e47cc5c160b60b45cda195d2.tar.gz
gleam_stdlib-c153d1ab16d19724e47cc5c160b60b45cda195d2.zip
Add set difference function
Diffstat (limited to 'src')
-rw-r--r--src/gleam/set.gleam17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gleam/set.gleam b/src/gleam/set.gleam
index 9ffaccd..406d501 100644
--- a/src/gleam/set.gleam
+++ b/src/gleam/set.gleam
@@ -260,3 +260,20 @@ pub fn intersection(
let #(larger, smaller) = order(first, second)
take(from: larger, keeping: to_list(smaller))
}
+
+/// Creates a new set that contains members that are present in the first set
+/// but not the second.
+///
+/// ## Examples
+///
+/// ```gleam
+/// > difference(from_list([1, 2]), from_list([2, 3, 4])) |> to_list
+/// [1]
+/// ```
+///
+pub fn difference(
+ from first: Set(member),
+ minus second: Set(member),
+) -> Set(member) {
+ drop(from: first, drop: to_list(second))
+}