aboutsummaryrefslogtreecommitdiff
path: root/src/std/result.gleam
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-05-29 21:02:55 +0100
committerLouis Pilfold <louis@lpil.uk>2019-06-02 21:12:59 +0100
commit5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31 (patch)
tree5d0d281c66cf71c6e3ca880e6621138a71b95e7b /src/std/result.gleam
parentee03f5a0465e176e220060164a5ffc408f73ed0d (diff)
downloadgleam_stdlib-5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31.tar.gz
gleam_stdlib-5a1f3494eb9517a7b7a332cb74dd10a6a7d32d31.zip
Enable namespaced modules
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
+ }
+}