aboutsummaryrefslogtreecommitdiff
path: root/gen/src/result.erl
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-04-14 13:03:24 +0000
committerLouis Pilfold <louis@lpil.uk>2019-04-14 13:03:32 +0000
commit8cfa606f3834cf7d05f5011bc68295a9d84263dc (patch)
treefa7edc8ea53426b072f35d3d61e0ab821c8d5feb /gen/src/result.erl
parentae5597c1b27982aabe74eb16d5b0c890802730d9 (diff)
downloadgleam_stdlib-8cfa606f3834cf7d05f5011bc68295a9d84263dc.tar.gz
gleam_stdlib-8cfa606f3834cf7d05f5011bc68295a9d84263dc.zip
stdlib: Split out tests
Diffstat (limited to 'gen/src/result.erl')
-rw-r--r--gen/src/result.erl67
1 files changed, 67 insertions, 0 deletions
diff --git a/gen/src/result.erl b/gen/src/result.erl
new file mode 100644
index 0000000..cd66908
--- /dev/null
+++ b/gen/src/result.erl
@@ -0,0 +1,67 @@
+-module(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.