aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastian <s@porto5.com>2020-10-14 16:05:24 +1100
committerLouis Pilfold <louis@lpil.uk>2020-10-17 13:33:20 +0200
commit1489e38aaa076112fe580cd096e4c827304d2bd3 (patch)
treef9b81627920250a85033ead47a583af13898bebf /src
parent42c75c7c9594a068d72b75390b2a47e17544d087 (diff)
downloadgleam_stdlib-1489e38aaa076112fe580cd096e4c827304d2bd3.tar.gz
gleam_stdlib-1489e38aaa076112fe580cd096e4c827304d2bd3.zip
Add result.all
Diffstat (limited to 'src')
-rw-r--r--src/gleam/result.gleam16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gleam/result.gleam b/src/gleam/result.gleam
index 88f933a..2ebf2ef 100644
--- a/src/gleam/result.gleam
+++ b/src/gleam/result.gleam
@@ -1,3 +1,5 @@
+import gleam/list
+
/// Result represents the result of something that may succeed or not.
/// `Ok` means it was successful, `Error` means it was not successful.
///
@@ -199,3 +201,17 @@ pub fn or(first: Result(a, e), second: Result(a, e)) -> Result(a, e) {
Error(_) -> second
}
}
+
+/// Combine a list of results into a single result.
+/// If all elements in the list are Ok then returns an Ok holding the list of values.
+/// If any element is Error then returns the first error.
+///
+/// ## Examples
+/// > all([Ok(1), Ok(2)])
+/// Ok([1, 2])
+///
+/// > all([Ok(1), Error("e")])
+/// Error("e")
+pub fn all(results: List(Result(a, e))) -> Result(List(a), e) {
+ list.try_map(results, fn(x) { x })
+}