diff options
Diffstat (limited to 'src/Result.gleam')
-rw-r--r-- | src/Result.gleam | 47 |
1 files changed, 10 insertions, 37 deletions
diff --git a/src/Result.gleam b/src/Result.gleam index 3650e61..6b9c413 100644 --- a/src/Result.gleam +++ b/src/Result.gleam @@ -1,20 +1,17 @@ module Result - exposing Result(..), is_ok/1, is_none/1, map/2, map_error/2, flatten/1, - flat_map/2, unwrap/2, to_maybe/1, from_maybe/1 - -import Maybe exposing Maybe(..) doc """ Result represents the result of something that may succeed or fail. `Ok` means it was successful, `Error` means it failed. """ -type Result(error, value) { +pub type Result(error, value) { | Ok(value) | Error(error) +; -; // Fix GitHub syntax highlighting +import Result:* -fn is_ok(result) { +pub fn is_ok(result) { case result { | Error(_) => False | Ok(_) => True @@ -26,7 +23,7 @@ test is_ok { is_ok(Error(1)) |> Assert.false } -fn is_error(result) { +pub fn is_error(result) { case result { | Ok(_) => False | Error(_) => True @@ -38,7 +35,7 @@ test is_error { is_error(Error(1)) |> Assert.true } -fn map(result, fun) { +pub fn map(result, fun) { case result { | Ok(x) => fun(x) | Error(_) => result @@ -54,7 +51,7 @@ test map { |> Assert.equal(Error(1)) } -fn map_error(result, fun) { +pub fn map_error(result, fun) { case result { | Ok(_) => result | Error(error) => Error(fun(error)) @@ -70,7 +67,7 @@ test map_error { |> Assert.equal(_, Error(2)) } -fn flatten(result) { +pub fn flatten(result) { case result { | Ok(x) => x | Error(_) => result @@ -86,7 +83,7 @@ test flatten { |> Assert.equal(_, Error(1)) } -fn flat_map(result, fun) { +pub fn flat_map(result, fun) { result |> unwrap(_, fun) |> flatten @@ -104,7 +101,7 @@ test flat_map { |> Assert.equal(_, Error(1)) } -fn unwrap(result, default) { +pub fn unwrap(result, default) { case result { | Ok(v) => v | Error(_) => default @@ -115,27 +112,3 @@ test unwrap { unwrap(Ok(1), 50) |> Assert.equal(_, 1) unwrap(Error("nope"), 50) |> Assert.equal(_, 50) } - -fn to_maybe(result) { - case result { - | Ok(v) => Just(v) - | Error(_) => Nothing - } -} - -test to_maybe { - to_maybe(Ok(1)) |> Assert.equal(_, Just(_, 1)) - to_maybe(Error(1)) |> Assert.equal(_, Nothing) -} - -fn from_maybe(maybe, error_reason) { - case maybe { - | Just(v) => Ok(v) - | Nothing => Error(error_reason) - } -} - -test from_maybe { - to_maybe(Just(1), :ok) |> Assert.equal(_, Ok(1)) - to_maybe(Nothing, :ok) |> Assert.equal(_, Error(:ok)) -} |