aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuci Phillips <104490260+scorpi4n@users.noreply.github.com>2024-05-15 17:31:17 -0500
committerLouis Pilfold <louis@lpil.uk>2024-05-20 19:26:45 +0100
commitb1eb2544db9029b783ab280dd7ece087f858194f (patch)
tree409c318af908717885679c69aff37f1e7f9c4e29
parent341edd8afe9f1e88c578a8a34f258b761db4b079 (diff)
downloadgleam_stdlib-b1eb2544db9029b783ab280dd7ece087f858194f.tar.gz
gleam_stdlib-b1eb2544db9029b783ab280dd7ece087f858194f.zip
Implement and test set.is_disjoint
-rw-r--r--src/gleam/set.gleam18
-rw-r--r--test/gleam/set_test.gleam8
2 files changed, 26 insertions, 0 deletions
diff --git a/src/gleam/set.gleam b/src/gleam/set.gleam
index 57c6388..c04ca92 100644
--- a/src/gleam/set.gleam
+++ b/src/gleam/set.gleam
@@ -307,3 +307,21 @@ pub fn difference(
pub fn is_subset(first: Set(member), of second: Set(member)) -> Bool {
intersection(of: first, and: second) == first
}
+
+/// Determines if two sets contain no common members
+///
+/// ## Examples
+///
+/// ```gleam
+/// is_disjoint(from_list([1, 2, 3], from_list([4, 5, 6])))
+/// // -> True
+/// ```
+///
+/// ```gleam
+/// is_disjoint(from_list([1, 2, 3]), from_list([3, 4, 5]))
+/// // -> False
+/// ```
+///
+pub fn is_disjoint(first: Set(member), from second: Set(member)) -> Bool {
+ intersection(of: first, and: second) == new()
+}
diff --git a/test/gleam/set_test.gleam b/test/gleam/set_test.gleam
index e9c24ca..f763c5d 100644
--- a/test/gleam/set_test.gleam
+++ b/test/gleam/set_test.gleam
@@ -121,3 +121,11 @@ pub fn is_subset_test() {
set.is_subset(set.from_list([1, 2]), set.from_list([2, 3, 4]))
|> should.be_false()
}
+
+pub fn is_disjoint_test() {
+ set.is_disjoint(set.from_list([1, 2, 3]), set.from_list([4, 5, 6]))
+ |> should.be_true()
+
+ set.is_disjoint(set.from_list([1, 2]), set.from_list([2, 3, 4]))
+ |> should.be_false()
+}