diff options
author | Louis Pilfold <louis@lpil.uk> | 2019-05-29 21:02:55 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-06-02 21:12:59 +0100 |
commit | 5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31 (patch) | |
tree | 5d0d281c66cf71c6e3ca880e6621138a71b95e7b /src/std/result.gleam | |
parent | ee03f5a0465e176e220060164a5ffc408f73ed0d (diff) | |
download | gleam_stdlib-5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31.tar.gz gleam_stdlib-5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31.zip |
Enable namespaced modules
Diffstat (limited to 'src/std/result.gleam')
-rw-r--r-- | src/std/result.gleam | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/std/result.gleam b/src/std/result.gleam new file mode 100644 index 0000000..133d9d5 --- /dev/null +++ b/src/std/result.gleam @@ -0,0 +1,51 @@ +// Result represents the result of something that may succeed or fail. +// `Ok` means it was successful, `Error` means it failed. + +pub fn is_ok(result) { + case result { + | Error(_) -> False + | Ok(_) -> True + } +} + +pub fn is_error(result) { + case result { + | Ok(_) -> False + | Error(_) -> True + } +} + +pub fn map(result, fun) { + case result { + | Ok(x) -> Ok(fun(x)) + | Error(e) -> Error(e) + } +} + +pub fn map_error(result, fun) { + case result { + | Ok(_) -> result + | Error(error) -> Error(fun(error)) + } +} + +pub fn flatten(result) { + case result { + | Ok(x) -> x + | Error(error) -> Error(error) + } +} + +pub fn then(result, fun) { + case result { + | Ok(x) -> fun(x) + | Error(e) -> Error(e) + } +} + +pub fn unwrap(result, default) { + case result { + | Ok(v) -> v + | Error(_) -> default + } +} |