Packages
gleam_stdlib
0.16.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
gen/src/gleam@option.erl
-module(gleam@option).
-compile(no_auto_import).
-export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, map/2, flatten/1, then/2, 'or'/2, values/1]).
-export_type([option/1]).
-type option(DHR) :: {some, DHR} | none.
-spec all(list(option(DHS))) -> option(list(DHS)).
all(List) ->
gleam@list:fold_right(
List,
{some, []},
fun(Item, Acc) -> case {Acc, Item} of
{{some, Values}, {some, Value}} ->
{some, [Value | Values]};
{_, _} ->
none
end end
).
-spec is_some(option(any())) -> boolean().
is_some(Option) ->
Option /= none.
-spec is_none(option(any())) -> boolean().
is_none(Option) ->
Option =:= none.
-spec to_result(option(DIB), DIE) -> {ok, DIB} | {error, DIE}.
to_result(Option, E) ->
case Option of
{some, A} ->
{ok, A};
_ ->
{error, E}
end.
-spec from_result({ok, DIH} | {error, any()}) -> option(DIH).
from_result(Result) ->
case Result of
{ok, A} ->
{some, A};
_ ->
none
end.
-spec unwrap(option(DIM), DIM) -> DIM.
unwrap(Option, Default) ->
case Option of
{some, X} ->
X;
none ->
Default
end.
-spec map(option(DIO), fun((DIO) -> DIQ)) -> option(DIQ).
map(Option, Fun) ->
case Option of
{some, X} ->
{some, Fun(X)};
none ->
none
end.
-spec flatten(option(option(DIS))) -> option(DIS).
flatten(Option) ->
case Option of
{some, X} ->
X;
none ->
none
end.
-spec then(option(DIW), fun((DIW) -> option(DIY))) -> option(DIY).
then(Option, Fun) ->
case Option of
{some, X} ->
Fun(X);
none ->
none
end.
-spec 'or'(option(DJB), option(DJB)) -> option(DJB).
'or'(First, Second) ->
case First of
{some, _} ->
First;
none ->
Second
end.
-spec values(list(option(DJF))) -> list(DJF).
values(Options) ->
gleam@list:filter_map(Options, fun(Op) -> to_result(Op, <<""/utf8>>) end).