From 96b2eb1b00d38c6bd6d0d4c1fc01f35573f1b167 Mon Sep 17 00:00:00 2001 From: Luci Phillips <104490260+scorpi4n@users.noreply.github.com> Date: Fri, 17 May 2024 19:55:15 -0500 Subject: Test and implement set.symmetric_difference --- src/gleam/set.gleam | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/gleam/set.gleam b/src/gleam/set.gleam index c04ca92..7fb8a41 100644 --- a/src/gleam/set.gleam +++ b/src/gleam/set.gleam @@ -325,3 +325,21 @@ pub fn is_subset(first: Set(member), of second: Set(member)) -> Bool { pub fn is_disjoint(first: Set(member), from second: Set(member)) -> Bool { intersection(of: first, and: second) == new() } + +/// Creates a new set that contains members that are present in either set, but +/// not both. +/// +/// ```gleam +/// symmetric_difference(from_list([1, 2, 4]), from_list([3, 4])) |> to_list +/// // -> [1, 2, 4] +/// ``` +/// +pub fn symmetric_difference( + of first: Set(member), + and second: Set(member), +) -> Set(member) { + difference( + from: union(of: first, and: second), + minus: intersection(of: first, and: second), + ) +} -- cgit v1.2.3