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