aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Saxton <peterhsaxton@gmail.com>2020-12-02 16:46:43 +0000
committerLouis Pilfold <louis@lpil.uk>2020-12-02 17:28:03 +0000
commit2f656a81c81a35d7d63bc67e9e0828b25fcca895 (patch)
tree04204cdbd856fd40920c364c6f008388090a9725 /src
parent719eccd9ab38a35e79580f684b9ebde85222eef8 (diff)
downloadgleam_stdlib-2f656a81c81a35d7d63bc67e9e0828b25fcca895.tar.gz
gleam_stdlib-2f656a81c81a35d7d63bc67e9e0828b25fcca895.zip
add lazy unwrap
Diffstat (limited to 'src')
-rw-r--r--src/gleam/result.gleam18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gleam/result.gleam b/src/gleam/result.gleam
index 76ee0e1..c381cae 100644
--- a/src/gleam/result.gleam
+++ b/src/gleam/result.gleam
@@ -165,6 +165,24 @@ pub fn unwrap(result: Result(a, e), or default: a) -> a {
}
}
+/// Extract the Ok value from a result, evaluating the default function if the result
+/// is an Error.
+///
+/// ## Examples
+///
+/// > unwrap(Ok(1), fn() { 0 })
+/// 1
+///
+/// > unwrap(Error(""), fn() { 0 })
+/// 0
+///
+pub fn lazy_unwrap(result: Result(a, e), or default: fn() -> a) -> a {
+ case result {
+ Ok(v) -> v
+ Error(_) -> default()
+ }
+}
+
/// Transforms any error into Error(Nil)
///
/// ## Examples