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, compare/2, min/2, max/2, is_even/1, is_odd/1, negate/1, sum/1, product/1]).
absolute_value(Num) ->
case Num >= 0 of
true ->
Num;
false ->
Num * -1
end.
parse(A) ->
gleam_stdlib:parse_int(A).
to_string(A) ->
erlang:integer_to_binary(A).
to_base_string(A, B) ->
erlang:integer_to_binary(A, B).
to_float(A) ->
erlang:float(A).
compare(A, B) ->
case A =:= B of
true ->
eq;
false ->
case A < B of
true ->
lt;
false ->
gt
end
end.
min(A, B) ->
case A < B of
true ->
A;
false ->
B
end.
max(A, B) ->
case A > B of
true ->
A;
false ->
B
end.
is_even(X) ->
(X rem 2) =:= 0.
is_odd(X) ->
(X rem 2) /= 0.
negate(X) ->
-1 * X.
sum(Numbers) ->
do_sum(Numbers, 0).
do_sum(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_sum(Rest, X + Initial)
end.
product(Numbers) ->
case Numbers of
[] ->
0;
_ ->
do_product(Numbers, 1)
end.
do_product(Numbers, Initial) ->
case Numbers of
[] ->
Initial;
[X | Rest] ->
do_product(Rest, X * Initial)
end.