From 27040c4f697c4031b49505758d3468b458ec91e8 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 22 Feb 2022 17:36:33 +0000 Subject: result.replace --- src/gleam/result.gleam | 55 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gleam/result.gleam b/src/gleam/result.gleam index cd80e2d..c774219 100644 --- a/src/gleam/result.gleam +++ b/src/gleam/result.gleam @@ -240,18 +240,61 @@ pub fn lazy_or( /// 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") +/// ```gleam +/// > all([Ok(1), Ok(2)]) +/// Ok([1, 2]) +/// ``` +/// +/// ```gleam +/// > all([Ok(1), Error("e")]) +/// Error("e") +/// ```gleam +/// pub fn all(results: List(Result(a, e))) -> Result(List(a), e) { list.try_map(results, fn(x) { x }) } +/// Replace the value within a result +/// +/// ## Examples +/// +/// ```gleam +/// > replace(Ok(1), Nil) +/// Ok(Nil) +/// ``` +/// +/// ```gleam +/// > replace(Error(1), Nil) +/// Error(1) +/// ``` +/// +pub fn replace(result: Result(a, e), value: b) -> Result(b, e) { + case result { + Ok(_) -> Ok(value) + Error(error) -> Error(error) + } +} + +/// Replace the error within a result +/// +/// ## Examples +/// +/// ```gleam +/// > replace_error(Error(1), Nil) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > replace_error(Ok(1), Nil) +/// Ok(1) +/// ``` +/// pub fn replace_error(result: Result(a, e1), error: e2) -> Result(a, e2) { - result - |> map_error(fn(_) { error }) + case result { + Ok(x) -> Ok(x) + Error(_) -> Error(error) + } } /// Given a list of results, returns only the values inside `Ok`. -- cgit v1.2.3