aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/gleam/dynamic.gleam2
-rw-r--r--src/gleam/list.gleam18
-rw-r--r--test/gleam/list_test.gleam6
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))
}