aboutsummaryrefslogtreecommitdiff
path: root/src/Result.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'src/Result.gleam')
-rw-r--r--src/Result.gleam47
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))
-}