aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Porto <s@porto5.com>2021-05-08 00:56:23 +1000
committerGitHub <noreply@github.com>2021-05-07 14:56:23 +0000
commit26f42e83dd5a842e4463b1613729c16f0251cef4 (patch)
tree439195e0b0756dec80c7c9ae846a621382529d16
parent3e3f49ac6b09a0e395d3d4f9cca3c811b2002c87 (diff)
downloadgleam_stdlib-26f42e83dd5a842e4463b1613729c16f0251cef4.tar.gz
gleam_stdlib-26f42e83dd5a842e4463b1613729c16f0251cef4.zip
Add result.values (#204)
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/gleam/result.gleam14
-rw-r--r--test/gleam/result_test.gleam5
3 files changed, 20 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 747bf99..bcbb957 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## Unreleased
+- The `result` module gains the `values` function.
- All modules now use the new `#(a, b, ...)` tuple syntax.
## v0.15.0 - 2021-05-05
diff --git a/src/gleam/result.gleam b/src/gleam/result.gleam
index 47fe956..d0601bf 100644
--- a/src/gleam/result.gleam
+++ b/src/gleam/result.gleam
@@ -264,3 +264,17 @@ pub fn replace_error(result: Result(a, e1), error: e2) -> Result(a, e2) {
result
|> map_error(fn(_) { error })
}
+
+/// Given a list of results
+/// Return only the values inside Ok
+///
+/// ## Examples
+///
+/// ```
+/// > values([Ok(1), None, Ok(3)])
+/// [1, 3]
+/// ```
+///
+pub fn values(results: List(Result(a, e))) -> List(a) {
+ list.filter_map(results, fn(r) { r })
+}
diff --git a/test/gleam/result_test.gleam b/test/gleam/result_test.gleam
index 5eb8a37..a2bd6ff 100644
--- a/test/gleam/result_test.gleam
+++ b/test/gleam/result_test.gleam
@@ -162,3 +162,8 @@ pub fn replace_error_test() {
|> result.replace_error("Invalid")
|> should.equal(Error("Invalid"))
}
+
+pub fn values_test() {
+ result.values([Ok(1), Error(""), Ok(3)])
+ |> should.equal([1, 3])
+}