diff options
-rw-r--r-- | src/gleam/bool.gleam | 25 | ||||
-rw-r--r-- | test/gleam/bool_test.gleam | 14 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/gleam/bool.gleam b/src/gleam/bool.gleam index e5b079f..0792057 100644 --- a/src/gleam/bool.gleam +++ b/src/gleam/bool.gleam @@ -55,6 +55,31 @@ pub fn exclusive_or(a: Bool, b: Bool) -> Bool { } } +/// Returns the exclusive nor of two bools +/// +/// ## Examples +/// +/// > exclusive_nor(False, False) +/// True +/// +/// > exclusive_nor(False, True) +/// False +/// +/// > exclusive_nor(True, False) +/// False +/// +/// > exclusive_nor(True, True) +/// True +/// +pub fn exclusive_nor(a: Bool, b: Bool) -> Bool { + case a, b { + False, False -> True + False, True -> False + True, False -> False + True, True -> True + } +} + /// Compares two bools and returns the first values Order to the second. /// /// ## Examples diff --git a/test/gleam/bool_test.gleam b/test/gleam/bool_test.gleam index aced02b..c2ef78b 100644 --- a/test/gleam/bool_test.gleam +++ b/test/gleam/bool_test.gleam @@ -24,6 +24,20 @@ pub fn exclusive_or_test() { |> should.be_true } +pub fn exclusive_nor_test() { + bool.exclusive_nor(False, False) + |> should.be_true + + bool.exclusive_nor(False, True) + |> should.be_false + + bool.exclusive_nor(True, False) + |> should.be_false + + bool.exclusive_nor(True, True) + |> should.be_true +} + pub fn compare_test() { bool.compare(True, True) |> should.equal(order.Eq) |