diff options
-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 |