diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-07-16 20:01:09 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-07-16 20:10:11 +0100 |
commit | ae5fb5c267af3d92a33b093bba5e61f0cd34f333 (patch) | |
tree | 4b5c385ec4cd1b6c0f56c7468b3262d182f86e2d | |
parent | 08ee11667c62bf416e7dcd8e314a7c8792168c2b (diff) | |
download | gleam_stdlib-ae5fb5c267af3d92a33b093bba5e61f0cd34f333.tar.gz gleam_stdlib-ae5fb5c267af3d92a33b093bba5e61f0cd34f333.zip |
JS pair module support
-rw-r--r-- | src/gleam/pair.gleam | 114 | ||||
-rw-r--r-- | test/gleam/pair_test.gleam | 116 |
2 files changed, 113 insertions, 117 deletions
diff --git a/src/gleam/pair.gleam b/src/gleam/pair.gleam index 246ce8c..6143ee9 100644 --- a/src/gleam/pair.gleam +++ b/src/gleam/pair.gleam @@ -1,63 +1,61 @@ -if erlang { - /// Returns the first element in a pair. - /// - /// ## Examples - /// - /// > first(#(1, 2)) - /// 1 - /// - pub fn first(pair: #(a, b)) -> a { - let #(a, _) = pair - a - } +/// Returns the first element in a pair. +/// +/// ## Examples +/// +/// > first(#(1, 2)) +/// 1 +/// +pub fn first(pair: #(a, b)) -> a { + let #(a, _) = pair + a +} - /// Returns the second element in a pair. - /// - /// ## Examples - /// - /// > second(#(1, 2)) - /// 2 - /// - pub fn second(pair: #(a, b)) -> b { - let #(_, a) = pair - a - } +/// Returns the second element in a pair. +/// +/// ## Examples +/// +/// > second(#(1, 2)) +/// 2 +/// +pub fn second(pair: #(a, b)) -> b { + let #(_, a) = pair + a +} - /// Returns a new pair with the elements swapped. - /// - /// ## Examples - /// - /// > swap(#(1, 2)) - /// #(2, 1) - /// - pub fn swap(pair: #(a, b)) -> #(b, a) { - let #(a, b) = pair - #(b, a) - } +/// Returns a new pair with the elements swapped. +/// +/// ## Examples +/// +/// > swap(#(1, 2)) +/// #(2, 1) +/// +pub fn swap(pair: #(a, b)) -> #(b, a) { + let #(a, b) = pair + #(b, a) +} - /// Returns a new pair with the first element having had `with` applied to - /// it. - /// - /// ## Examples - /// - /// > #(1, 2) |> map_first(fn(n) { n * 2 }) - /// 2 - /// - pub fn map_first(of pair: #(a, b), with fun: fn(a) -> c) -> #(c, b) { - let #(a, b) = pair - #(fun(a), b) - } +/// Returns a new pair with the first element having had `with` applied to +/// it. +/// +/// ## Examples +/// +/// > #(1, 2) |> map_first(fn(n) { n * 2 }) +/// 2 +/// +pub fn map_first(of pair: #(a, b), with fun: fn(a) -> c) -> #(c, b) { + let #(a, b) = pair + #(fun(a), b) +} - /// Returns a new pair with the second element having had `with` applied to - /// it. - /// - /// ## Examples - /// - /// > #(1, 2) |> map_second(fn(n) { n * 2 }) - /// 4 - /// - pub fn map_second(of pair: #(a, b), with fun: fn(b) -> c) -> #(a, c) { - let #(a, b) = pair - #(a, fun(b)) - } +/// Returns a new pair with the second element having had `with` applied to +/// it. +/// +/// ## Examples +/// +/// > #(1, 2) |> map_second(fn(n) { n * 2 }) +/// 4 +/// +pub fn map_second(of pair: #(a, b), with fun: fn(b) -> c) -> #(a, c) { + let #(a, b) = pair + #(a, fun(b)) } diff --git a/test/gleam/pair_test.gleam b/test/gleam/pair_test.gleam index 891ce4a..1950929 100644 --- a/test/gleam/pair_test.gleam +++ b/test/gleam/pair_test.gleam @@ -1,60 +1,58 @@ -if erlang { - import gleam/should - import gleam/pair - - pub fn first_test() { - #(1, 2) - |> pair.first - |> should.equal(1) - - #("abc", []) - |> pair.first - |> should.equal("abc") - } - - pub fn second_test() { - #(1, 2) - |> pair.second - |> should.equal(2) - - #("abc", []) - |> pair.second - |> should.equal([]) - } - - pub fn swap_test() { - #(1, "2") - |> pair.swap - |> should.equal(#("2", 1)) - } - - pub fn map_first_test() { - let inc = fn(a) { a + 1 } - pair.map_first(#(1, 2), inc) - |> should.equal(#(2, 2)) - - pair.map_first(#(8, 2), inc) - |> should.equal(#(9, 2)) - - pair.map_first(#(0, -2), inc) - |> should.equal(#(1, -2)) - - pair.map_first(#(-10, 20), inc) - |> should.equal(#(-9, 20)) - } - - pub fn map_second_test() { - let dec = fn(a) { a - 1 } - pair.map_second(#(1, 2), dec) - |> should.equal(#(1, 1)) - - pair.map_second(#(8, 2), dec) - |> should.equal(#(8, 1)) - - pair.map_second(#(0, -2), dec) - |> should.equal(#(0, -3)) - - pair.map_second(#(-10, 20), dec) - |> should.equal(#(-10, 19)) - } +import gleam/should +import gleam/pair + +pub fn first_test() { + #(1, 2) + |> pair.first + |> should.equal(1) + + #("abc", []) + |> pair.first + |> should.equal("abc") +} + +pub fn second_test() { + #(1, 2) + |> pair.second + |> should.equal(2) + + #("abc", []) + |> pair.second + |> should.equal([]) +} + +pub fn swap_test() { + #(1, "2") + |> pair.swap + |> should.equal(#("2", 1)) +} + +pub fn map_first_test() { + let inc = fn(a) { a + 1 } + pair.map_first(#(1, 2), inc) + |> should.equal(#(2, 2)) + + pair.map_first(#(8, 2), inc) + |> should.equal(#(9, 2)) + + pair.map_first(#(0, -2), inc) + |> should.equal(#(1, -2)) + + pair.map_first(#(-10, 20), inc) + |> should.equal(#(-9, 20)) +} + +pub fn map_second_test() { + let dec = fn(a) { a - 1 } + pair.map_second(#(1, 2), dec) + |> should.equal(#(1, 1)) + + pair.map_second(#(8, 2), dec) + |> should.equal(#(8, 1)) + + pair.map_second(#(0, -2), dec) + |> should.equal(#(0, -3)) + + pair.map_second(#(-10, 20), dec) + |> should.equal(#(-10, 19)) } |