Current section

Files

Jump to
lustre src lustre@cli@utils.erl
Raw

src/lustre@cli@utils.erl

-module(lustre@cli@utils).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export(['try'/3, replace/1, map/1, guard/3, 'when'/3]).
-spec 'try'(
{ok, PTT} | {error, PTU},
fun((PTU) -> PTX),
fun((PTT) -> {ok, PUA} | {error, PTX})
) -> {ok, PUA} | {error, PTX}.
'try'(Result, Strategy, F) ->
case Result of
{ok, Value} ->
F(Value);
{error, X} ->
{error, Strategy(X)}
end.
-spec replace(PUF) -> fun((any()) -> PUF).
replace(Error) ->
fun(_) -> Error end.
-spec map(fun((PUJ) -> PUK)) -> fun((PUJ) -> PUK).
map(F) ->
F.
-spec guard(boolean(), PUN, fun(() -> {ok, PUO} | {error, PUN})) -> {ok, PUO} |
{error, PUN}.
guard(Condition, Consequence, Then) ->
case Condition of
true ->
{error, Consequence};
false ->
Then()
end.
-spec 'when'(boolean(), PUT, fun(() -> {ok, PUT} | {error, PUU})) -> {ok, PUT} |
{error, PUU}.
'when'(Condition, Consequence, Then) ->
case Condition of
true ->
{ok, Consequence};
false ->
Then()
end.