diff options
author | Louis Pilfold <louis@lpil.uk> | 2020-06-18 21:46:25 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-06-18 21:46:25 +0100 |
commit | 8b7f2290c67d7fc8714425785aaa14bcd781623c (patch) | |
tree | 0536a6f558ae90dae47ddcab01a46c639a8fcd4c | |
parent | 5271f212d976e9fe76145ebc516bb56522934f33 (diff) | |
download | gleam_stdlib-8b7f2290c67d7fc8714425785aaa14bcd781623c.tar.gz gleam_stdlib-8b7f2290c67d7fc8714425785aaa14bcd781623c.zip |
traverse -> try_map
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | src/gleam/dynamic.gleam | 2 | ||||
-rw-r--r-- | src/gleam/list.gleam | 18 | ||||
-rw-r--r-- | test/gleam/list_test.gleam | 6 |
4 files changed, 15 insertions, 13 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index de8c788..9e750c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ - The `dynamic.list` function has been renamed to `dynamic.typed_list`. - The `dynamic.opaque_list` function has been renamed to `dynamic.list`. - The `dynamic.tuple2_of` function has been renamed to `dynamic.typed_tuple2`. +- The `list.traverse` function has been renamed to `list.try_map`. +- The `list.traverse` first argument gains the label `over`. ## 0.9.0 - 2020-05-26 diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam index c82ae86..4fbee8b 100644 --- a/src/gleam/dynamic.gleam +++ b/src/gleam/dynamic.gleam @@ -172,7 +172,7 @@ pub fn typed_list( ) -> Result(List(inner), String) { dynamic |> list - |> result.then(list_mod.traverse(_, decoder_type)) + |> result.then(list_mod.try_map(_, decoder_type)) } /// Check to see if a Dynamic value is a map with a specific field, and return diff --git a/src/gleam/list.gleam b/src/gleam/list.gleam index a919d9c..de04d2c 100644 --- a/src/gleam/list.gleam +++ b/src/gleam/list.gleam @@ -273,7 +273,7 @@ pub fn index_map(list: List(a), with fun: fn(Int, a) -> b) -> List(b) { do_index_map(list, fun, 0, []) } -fn do_traverse( +fn do_try_map( list: List(a), fun: fn(a) -> Result(b, e), acc: List(b), @@ -281,7 +281,7 @@ fn do_traverse( case list { [] -> Ok(reverse(acc)) [x, ..xs] -> case fun(x) { - Ok(y) -> do_traverse(xs, fun, [y, ..acc]) + Ok(y) -> do_try_map(xs, fun, [y, ..acc]) Error(error) -> Error(error) } } @@ -299,23 +299,23 @@ fn do_traverse( /// /// ## Examples /// -/// > traverse([1, 2, 3], fn(x) { Ok(x + 2) }) +/// > try_map([1, 2, 3], fn(x) { Ok(x + 2) }) /// Ok([3, 4, 5]) /// -/// > traverse([1, 2, 3], fn(x) { Error(0) }) +/// > try_map([1, 2, 3], fn(x) { Error(0) }) /// Error(0) /// -/// > traverse([[1], [2, 3]], head) +/// > try_map([[1], [2, 3]], head) /// Ok([1, 2]) /// -/// > traverse([[1], [], [2]], head) +/// > try_map([[1], [], [2]], head) /// Error(Nil) /// -pub fn traverse( - list: List(a), +pub fn try_map( + over list: List(a), with fun: fn(a) -> Result(b, e), ) -> Result(List(b), e) { - do_traverse(list, fun, []) + do_try_map(list, fun, []) } /// Returns a list that is the given list with up to the given number of diff --git a/test/gleam/list_test.gleam b/test/gleam/list_test.gleam index 4576d7f..35e5701 100644 --- a/test/gleam/list_test.gleam +++ b/test/gleam/list_test.gleam @@ -99,7 +99,7 @@ pub fn map_test() { |> should.equal([0, 8, 10, 14, 6]) } -pub fn traverse_test() { +pub fn try_map_test() { let fun = fn(x) { case x == 6 || x == 5 || x == 4 { True -> Ok(x * 2) @@ -108,11 +108,11 @@ pub fn traverse_test() { } [5, 6, 5, 6] - |> list.traverse(fun) + |> list.try_map(fun) |> should.equal(Ok([10, 12, 10, 12])) [4, 6, 5, 7, 3] - |> list.traverse(fun) + |> list.try_map(fun) |> should.equal(Error(7)) } |