aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Saxton <peterhsaxton@gmail.com>2023-01-11 08:11:07 +0100
committerLouis Pilfold <louis@lpil.uk>2023-01-12 13:14:57 +0000
commit75347cb58f659dbf6c8e1999639c77e9852b068c (patch)
tree6a6aea08f558338989957a4b49ac9116c18ce5d7
parent124a0b1050c6c5d657b314402fafb75c7ffce3d5 (diff)
downloadgleam_stdlib-75347cb58f659dbf6c8e1999639c77e9852b068c.tar.gz
gleam_stdlib-75347cb58f659dbf6c8e1999639c77e9852b068c.zip
add drop function to set module
-rw-r--r--src/gleam/set.gleam4
-rw-r--r--test/gleam/set_test.gleam7
2 files changed, 11 insertions, 0 deletions
diff --git a/src/gleam/set.gleam b/src/gleam/set.gleam
index 66b8378..2440986 100644
--- a/src/gleam/set.gleam
+++ b/src/gleam/set.gleam
@@ -199,6 +199,10 @@ pub fn filter(
Set(map.filter(in: set.map, for: fn(m, _) { property(m) }))
}
+pub fn drop(from set: Set(member), drop disallowed: List(member)) -> Set(member) {
+ list.fold(over: disallowed, from: set, with: delete)
+}
+
/// Creates a new map from a given map, only including any members which are in
/// a given list.
///
diff --git a/test/gleam/set_test.gleam b/test/gleam/set_test.gleam
index c771951..aae5256 100644
--- a/test/gleam/set_test.gleam
+++ b/test/gleam/set_test.gleam
@@ -80,6 +80,13 @@ pub fn take_test() {
|> should.equal(set.from_list([1, 3]))
}
+pub fn drop_test() {
+ ["a", "b", "c"]
+ |> set.from_list
+ |> set.drop(["a", "b", "d"])
+ |> should.equal(set.from_list(["c"]))
+}
+
pub fn union_test() {
set.union(set.from_list([1, 2]), set.from_list([2, 3]))
|> set.to_list