aboutsummaryrefslogtreecommitdiff
path: root/gen/src/gleam@result.erl
diff options
context:
space:
mode:
Diffstat (limited to 'gen/src/gleam@result.erl')
-rw-r--r--gen/src/gleam@result.erl67
1 files changed, 67 insertions, 0 deletions
diff --git a/gen/src/gleam@result.erl b/gen/src/gleam@result.erl
new file mode 100644
index 0000000..77c5a57
--- /dev/null
+++ b/gen/src/gleam@result.erl
@@ -0,0 +1,67 @@
+-module(gleam@result).
+-compile(no_auto_import).
+
+-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]).
+
+is_ok(Result) ->
+ case Result of
+ {error, _} ->
+ false;
+
+ {ok, _} ->
+ true
+ end.
+
+is_error(Result) ->
+ case Result of
+ {ok, _} ->
+ false;
+
+ {error, _} ->
+ true
+ end.
+
+map(Result, Fun) ->
+ case Result of
+ {ok, X} ->
+ {ok, Fun(X)};
+
+ {error, E} ->
+ {error, E}
+ end.
+
+map_error(Result, Fun) ->
+ case Result of
+ {ok, _} ->
+ Result;
+
+ {error, Error} ->
+ {error, Fun(Error)}
+ end.
+
+flatten(Result) ->
+ case Result of
+ {ok, X} ->
+ X;
+
+ {error, Error} ->
+ {error, Error}
+ end.
+
+then(Result, Fun) ->
+ case Result of
+ {ok, X} ->
+ Fun(X);
+
+ {error, E} ->
+ {error, E}
+ end.
+
+unwrap(Result, Default) ->
+ case Result of
+ {ok, V} ->
+ V;
+
+ {error, _} ->
+ Default
+ end.