Current section

Files

Jump to
gleam_stdlib gen src gleam@int.erl
Raw

gen/src/gleam@int.erl

-module(gleam@int).
-compile(no_auto_import).
-export([absolute_value/1, parse/1, to_string/1, to_base_string/2, to_float/1, clamp/3, compare/2, min/2, max/2, is_even/1, is_odd/1, negate/1, sum/1, product/1]).
-spec absolute_value(integer()) -> integer().
absolute_value(Num) ->
case Num >= 0 of
true ->
Num;
false ->
Num * -1
end.
-spec parse(binary()) -> {ok, integer()} | {error, nil}.
parse(A) ->
gleam_stdlib:parse_int(A).
-spec to_string(integer()) -> binary().
to_string(A) ->
erlang:integer_to_binary(A).
-spec to_base_string(integer(), integer()) -> binary().
to_base_string(A, B) ->
erlang:integer_to_binary(A, B).
-spec to_float(integer()) -> float().
to_float(A) ->
erlang:float(A).
-spec clamp(integer(), integer(), integer()) -> integer().
clamp(N, Min_bound, Max_bound) ->
max(min(N, Max_bound), Min_bound).
-spec compare(integer(), integer()) -> gleam@order:order().
compare(A, B) ->
case A =:= B of
true ->
eq;
false ->
case A < B of
true ->
lt;
false ->
gt
end
end.
-spec min(integer(), integer()) -> integer().
min(A, B) ->
case A < B of
true ->
A;
false ->
B
end.
-spec max(integer(), integer()) -> integer().
max(A, B) ->
case A > B of
true ->
A;
false ->
B
end.
-spec is_even(integer()) -> boolean().
is_even(X) ->
(X rem 2) =:= 0.
-spec is_odd(integer()) -> boolean().
is_odd(X) ->
(X rem 2) /= 0.
-spec negate(integer()) -> integer().
negate(X) ->
-1 * X.
-spec sum(list(integer())) -> integer().
sum(Numbers) ->
do_sum(Numbers, 0).
-spec do_sum(list(integer()), integer()) -> integer().
do_sum(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_sum(Rest, X + Initial)
end.
-spec product(list(integer())) -> integer().
product(Numbers) ->
case Numbers of
[] ->
0;
_ ->
do_product(Numbers, 1)
end.
-spec do_product(list(integer()), integer()) -> integer().
do_product(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_product(Rest, X * Initial)
end.