diff options
author | Peter Saxton <peterhsaxton@gmail.com> | 2023-01-11 08:11:07 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-01-12 13:14:57 +0000 |
commit | 75347cb58f659dbf6c8e1999639c77e9852b068c (patch) | |
tree | 6a6aea08f558338989957a4b49ac9116c18ce5d7 | |
parent | 124a0b1050c6c5d657b314402fafb75c7ffce3d5 (diff) | |
download | gleam_stdlib-75347cb58f659dbf6c8e1999639c77e9852b068c.tar.gz gleam_stdlib-75347cb58f659dbf6c8e1999639c77e9852b068c.zip |
add drop function to set module
-rw-r--r-- | src/gleam/set.gleam | 4 | ||||
-rw-r--r-- | test/gleam/set_test.gleam | 7 |
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 |