create-mendix-widget-gleam 2.0.13 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/package.json +5 -1
- package/src/index.mjs +22 -7
- package/src/templates/readme_md.mjs +6 -6
- package/template/docs/glendix_guide.md +204 -1
- package/template/gleam.toml +1 -1
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@command.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@cursor.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@event.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@internal@consts.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@stdout.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@style.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_inline +0 -0
- package/tui/build/dev/javascript/etch/_gleam_artefacts/etch@terminal.cache_meta +0 -0
- package/tui/build/dev/javascript/etch/etch/command.mjs +479 -0
- package/tui/build/dev/javascript/etch/etch/cursor.mjs +164 -0
- package/tui/build/dev/javascript/etch/etch/event.mjs +2399 -0
- package/tui/build/dev/javascript/etch/etch/internal/consts.mjs +3 -0
- package/tui/build/dev/javascript/etch/etch/stdout.mjs +375 -0
- package/tui/build/dev/javascript/etch/etch/style.mjs +741 -0
- package/tui/build/dev/javascript/etch/etch/terminal.mjs +137 -0
- package/tui/build/dev/javascript/etch/gleam.mjs +1 -0
- package/tui/build/dev/javascript/etch/input/event_ffi.erl +73 -0
- package/tui/build/dev/javascript/etch/input/input_ffi.mjs +192 -0
- package/tui/build/dev/javascript/etch/input/signal_handler.erl +33 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.erl +22 -0
- package/tui/build/dev/javascript/etch/terminal/terminal_ffi.mjs +37 -0
- package/tui/build/dev/javascript/etch/terminal/tty_state.erl +29 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@application.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@port.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_erlang/_gleam_artefacts/gleam@erlang@reference.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/application.mjs +38 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/atom.mjs +2 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/charlist.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/node.mjs +12 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/port.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/process.mjs +161 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam/erlang/reference.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@application.erl +43 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@atom.erl +94 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@charlist.erl +42 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@node.erl +80 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@port.erl +8 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@process.erl +868 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam@erlang@reference.erl +21 -0
- package/tui/build/dev/javascript/gleam_erlang/gleam_erlang_ffi.erl +164 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@promise.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_javascript/_gleam_artefacts/gleam@javascript@symbol.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/array.mjs +24 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/promise.mjs +105 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam/javascript/symbol.mjs +7 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_javascript/gleam_javascript_ffi.mjs +133 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
- package/tui/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +286 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +295 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +455 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +993 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/float.mjs +528 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/int.mjs +764 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3063 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/option.mjs +386 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/order.mjs +166 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +96 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/result.mjs +448 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/set.mjs +413 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string.mjs +695 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +128 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1151 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bool.erl +334 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dict.erl +513 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +105 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1114 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@float.erl +711 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@int.erl +972 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@io.erl +76 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@list.erl +2735 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@option.erl +381 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@order.erl +188 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@pair.erl +104 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@result.erl +500 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@set.erl +430 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string.erl +964 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +202 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1042 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +534 -0
- package/tui/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1133 -0
- package/tui/build/dev/javascript/gleam_version +1 -0
- package/tui/build/dev/javascript/prelude.mjs +1575 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_inline +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_meta +0 -0
- package/tui/build/dev/javascript/tui/_gleam_artefacts/tui@prompt.cache_warnings +0 -0
- package/tui/build/dev/javascript/tui/gleam.mjs +1 -0
- package/tui/build/dev/javascript/tui/tui/prompt.mjs +521 -0
- package/tui/build/dev/javascript/tui/tui.mjs +334 -0
- package/tui/build/dev/javascript/tui/tui_ffi.mjs +32 -0
|
@@ -0,0 +1,972 @@
|
|
|
1
|
+
-module(gleam@int).
|
|
2
|
+
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
|
|
3
|
+
-define(FILEPATH, "src/gleam/int.gleam").
|
|
4
|
+
-export([absolute_value/1, parse/1, base_parse/2, to_string/1, to_base_string/2, to_base2/1, to_base8/1, to_base16/1, to_base36/1, to_float/1, power/2, square_root/1, compare/2, min/2, max/2, clamp/3, is_even/1, is_odd/1, negate/1, sum/1, product/1, random/1, divide/2, remainder/2, modulo/2, floor_divide/2, add/2, multiply/2, subtract/2, bitwise_and/2, bitwise_not/1, bitwise_or/2, bitwise_exclusive_or/2, bitwise_shift_left/2, bitwise_shift_right/2, range/4]).
|
|
5
|
+
|
|
6
|
+
-if(?OTP_RELEASE >= 27).
|
|
7
|
+
-define(MODULEDOC(Str), -moduledoc(Str)).
|
|
8
|
+
-define(DOC(Str), -doc(Str)).
|
|
9
|
+
-else.
|
|
10
|
+
-define(MODULEDOC(Str), -compile([])).
|
|
11
|
+
-define(DOC(Str), -compile([])).
|
|
12
|
+
-endif.
|
|
13
|
+
|
|
14
|
+
?MODULEDOC(
|
|
15
|
+
" Functions for working with integers.\n"
|
|
16
|
+
"\n"
|
|
17
|
+
" ## Division by zero\n"
|
|
18
|
+
"\n"
|
|
19
|
+
" In Erlang division by zero results in a crash, however Gleam does not have\n"
|
|
20
|
+
" partial functions and operators in core so instead division by zero returns\n"
|
|
21
|
+
" zero, a behaviour taken from Pony, Coq, and Lean.\n"
|
|
22
|
+
"\n"
|
|
23
|
+
" This may seem unexpected at first, but it is no less mathematically valid\n"
|
|
24
|
+
" than crashing or returning a special value. Division by zero is undefined\n"
|
|
25
|
+
" in mathematics.\n"
|
|
26
|
+
).
|
|
27
|
+
|
|
28
|
+
-file("src/gleam/int.gleam", 28).
|
|
29
|
+
?DOC(
|
|
30
|
+
" Returns the absolute value of the input.\n"
|
|
31
|
+
"\n"
|
|
32
|
+
" ## Examples\n"
|
|
33
|
+
"\n"
|
|
34
|
+
" ```gleam\n"
|
|
35
|
+
" assert absolute_value(-12) == 12\n"
|
|
36
|
+
" ```\n"
|
|
37
|
+
"\n"
|
|
38
|
+
" ```gleam\n"
|
|
39
|
+
" assert absolute_value(10) == 10\n"
|
|
40
|
+
" ```\n"
|
|
41
|
+
).
|
|
42
|
+
-spec absolute_value(integer()) -> integer().
|
|
43
|
+
absolute_value(X) ->
|
|
44
|
+
case X >= 0 of
|
|
45
|
+
true ->
|
|
46
|
+
X;
|
|
47
|
+
|
|
48
|
+
false ->
|
|
49
|
+
X * -1
|
|
50
|
+
end.
|
|
51
|
+
|
|
52
|
+
-file("src/gleam/int.gleam", 98).
|
|
53
|
+
?DOC(
|
|
54
|
+
" Parses a given string as an int if possible.\n"
|
|
55
|
+
"\n"
|
|
56
|
+
" ## Examples\n"
|
|
57
|
+
"\n"
|
|
58
|
+
" ```gleam\n"
|
|
59
|
+
" assert parse(\"2\") == Ok(2)\n"
|
|
60
|
+
" ```\n"
|
|
61
|
+
"\n"
|
|
62
|
+
" ```gleam\n"
|
|
63
|
+
" assert parse(\"ABC\") == Error(Nil)\n"
|
|
64
|
+
" ```\n"
|
|
65
|
+
).
|
|
66
|
+
-spec parse(binary()) -> {ok, integer()} | {error, nil}.
|
|
67
|
+
parse(String) ->
|
|
68
|
+
gleam_stdlib:parse_int(String).
|
|
69
|
+
|
|
70
|
+
-file("src/gleam/int.gleam", 125).
|
|
71
|
+
?DOC(
|
|
72
|
+
" Parses a given string as an int in a given base if possible.\n"
|
|
73
|
+
" Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`.\n"
|
|
74
|
+
"\n"
|
|
75
|
+
" ## Examples\n"
|
|
76
|
+
"\n"
|
|
77
|
+
" ```gleam\n"
|
|
78
|
+
" assert base_parse(\"10\", 2) == Ok(2)\n"
|
|
79
|
+
" ```\n"
|
|
80
|
+
"\n"
|
|
81
|
+
" ```gleam\n"
|
|
82
|
+
" assert base_parse(\"30\", 16) == Ok(48)\n"
|
|
83
|
+
" ```\n"
|
|
84
|
+
"\n"
|
|
85
|
+
" ```gleam\n"
|
|
86
|
+
" assert base_parse(\"1C\", 36) == Ok(48)\n"
|
|
87
|
+
" ```\n"
|
|
88
|
+
"\n"
|
|
89
|
+
" ```gleam\n"
|
|
90
|
+
" assert base_parse(\"48\", 1) == Error(Nil)\n"
|
|
91
|
+
" ```\n"
|
|
92
|
+
"\n"
|
|
93
|
+
" ```gleam\n"
|
|
94
|
+
" assert base_parse(\"48\", 37) == Error(Nil)\n"
|
|
95
|
+
" ```\n"
|
|
96
|
+
).
|
|
97
|
+
-spec base_parse(binary(), integer()) -> {ok, integer()} | {error, nil}.
|
|
98
|
+
base_parse(String, Base) ->
|
|
99
|
+
case (Base >= 2) andalso (Base =< 36) of
|
|
100
|
+
true ->
|
|
101
|
+
gleam_stdlib:int_from_base_string(String, Base);
|
|
102
|
+
|
|
103
|
+
false ->
|
|
104
|
+
{error, nil}
|
|
105
|
+
end.
|
|
106
|
+
|
|
107
|
+
-file("src/gleam/int.gleam", 146).
|
|
108
|
+
?DOC(
|
|
109
|
+
" Prints a given int to a string.\n"
|
|
110
|
+
"\n"
|
|
111
|
+
" ## Examples\n"
|
|
112
|
+
"\n"
|
|
113
|
+
" ```gleam\n"
|
|
114
|
+
" assert to_string(2) == \"2\"\n"
|
|
115
|
+
" ```\n"
|
|
116
|
+
).
|
|
117
|
+
-spec to_string(integer()) -> binary().
|
|
118
|
+
to_string(X) ->
|
|
119
|
+
erlang:integer_to_binary(X).
|
|
120
|
+
|
|
121
|
+
-file("src/gleam/int.gleam", 174).
|
|
122
|
+
?DOC(
|
|
123
|
+
" Prints a given int to a string using the base number provided.\n"
|
|
124
|
+
" Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`.\n"
|
|
125
|
+
" For common bases (2, 8, 16, 36), use the `to_baseN` functions.\n"
|
|
126
|
+
"\n"
|
|
127
|
+
" ## Examples\n"
|
|
128
|
+
"\n"
|
|
129
|
+
" ```gleam\n"
|
|
130
|
+
" assert to_base_string(2, 2) == Ok(\"10\")\n"
|
|
131
|
+
" ```\n"
|
|
132
|
+
"\n"
|
|
133
|
+
" ```gleam\n"
|
|
134
|
+
" assert to_base_string(48, 16) == Ok(\"30\")\n"
|
|
135
|
+
" ```\n"
|
|
136
|
+
"\n"
|
|
137
|
+
" ```gleam\n"
|
|
138
|
+
" assert to_base_string(48, 36) == Ok(\"1C\")\n"
|
|
139
|
+
" ```\n"
|
|
140
|
+
"\n"
|
|
141
|
+
" ```gleam\n"
|
|
142
|
+
" assert to_base_string(48, 1) == Error(Nil)\n"
|
|
143
|
+
" ```\n"
|
|
144
|
+
"\n"
|
|
145
|
+
" ```gleam\n"
|
|
146
|
+
" assert to_base_string(48, 37) == Error(Nil)\n"
|
|
147
|
+
" ```\n"
|
|
148
|
+
).
|
|
149
|
+
-spec to_base_string(integer(), integer()) -> {ok, binary()} | {error, nil}.
|
|
150
|
+
to_base_string(X, Base) ->
|
|
151
|
+
case (Base >= 2) andalso (Base =< 36) of
|
|
152
|
+
true ->
|
|
153
|
+
{ok, erlang:integer_to_binary(X, Base)};
|
|
154
|
+
|
|
155
|
+
false ->
|
|
156
|
+
{error, nil}
|
|
157
|
+
end.
|
|
158
|
+
|
|
159
|
+
-file("src/gleam/int.gleam", 193).
|
|
160
|
+
?DOC(
|
|
161
|
+
" Prints a given int to a string using base-2.\n"
|
|
162
|
+
"\n"
|
|
163
|
+
" ## Examples\n"
|
|
164
|
+
"\n"
|
|
165
|
+
" ```gleam\n"
|
|
166
|
+
" assert to_base2(2) == \"10\"\n"
|
|
167
|
+
" ```\n"
|
|
168
|
+
).
|
|
169
|
+
-spec to_base2(integer()) -> binary().
|
|
170
|
+
to_base2(X) ->
|
|
171
|
+
erlang:integer_to_binary(X, 2).
|
|
172
|
+
|
|
173
|
+
-file("src/gleam/int.gleam", 205).
|
|
174
|
+
?DOC(
|
|
175
|
+
" Prints a given int to a string using base-8.\n"
|
|
176
|
+
"\n"
|
|
177
|
+
" ## Examples\n"
|
|
178
|
+
"\n"
|
|
179
|
+
" ```gleam\n"
|
|
180
|
+
" assert to_base8(15) == \"17\"\n"
|
|
181
|
+
" ```\n"
|
|
182
|
+
).
|
|
183
|
+
-spec to_base8(integer()) -> binary().
|
|
184
|
+
to_base8(X) ->
|
|
185
|
+
erlang:integer_to_binary(X, 8).
|
|
186
|
+
|
|
187
|
+
-file("src/gleam/int.gleam", 217).
|
|
188
|
+
?DOC(
|
|
189
|
+
" Prints a given int to a string using base-16.\n"
|
|
190
|
+
"\n"
|
|
191
|
+
" ## Examples\n"
|
|
192
|
+
"\n"
|
|
193
|
+
" ```gleam\n"
|
|
194
|
+
" assert to_base16(48) == \"30\"\n"
|
|
195
|
+
" ```\n"
|
|
196
|
+
).
|
|
197
|
+
-spec to_base16(integer()) -> binary().
|
|
198
|
+
to_base16(X) ->
|
|
199
|
+
erlang:integer_to_binary(X, 16).
|
|
200
|
+
|
|
201
|
+
-file("src/gleam/int.gleam", 229).
|
|
202
|
+
?DOC(
|
|
203
|
+
" Prints a given int to a string using base-36.\n"
|
|
204
|
+
"\n"
|
|
205
|
+
" ## Examples\n"
|
|
206
|
+
"\n"
|
|
207
|
+
" ```gleam\n"
|
|
208
|
+
" assert to_base36(48) == \"1C\"\n"
|
|
209
|
+
" ```\n"
|
|
210
|
+
).
|
|
211
|
+
-spec to_base36(integer()) -> binary().
|
|
212
|
+
to_base36(X) ->
|
|
213
|
+
erlang:integer_to_binary(X, 36).
|
|
214
|
+
|
|
215
|
+
-file("src/gleam/int.gleam", 251).
|
|
216
|
+
?DOC(
|
|
217
|
+
" Takes an int and returns its value as a float.\n"
|
|
218
|
+
"\n"
|
|
219
|
+
" ## Examples\n"
|
|
220
|
+
"\n"
|
|
221
|
+
" ```gleam\n"
|
|
222
|
+
" assert to_float(5) == 5.0\n"
|
|
223
|
+
" ```\n"
|
|
224
|
+
"\n"
|
|
225
|
+
" ```gleam\n"
|
|
226
|
+
" assert to_float(0) == 0.0\n"
|
|
227
|
+
" ```\n"
|
|
228
|
+
"\n"
|
|
229
|
+
" ```gleam\n"
|
|
230
|
+
" assert to_float(-3) == -3.0\n"
|
|
231
|
+
" ```\n"
|
|
232
|
+
).
|
|
233
|
+
-spec to_float(integer()) -> float().
|
|
234
|
+
to_float(X) ->
|
|
235
|
+
erlang:float(X).
|
|
236
|
+
|
|
237
|
+
-file("src/gleam/int.gleam", 60).
|
|
238
|
+
?DOC(
|
|
239
|
+
" Returns the result of the base being raised to the power of the\n"
|
|
240
|
+
" exponent, as a `Float`.\n"
|
|
241
|
+
"\n"
|
|
242
|
+
" ## Examples\n"
|
|
243
|
+
"\n"
|
|
244
|
+
" ```gleam\n"
|
|
245
|
+
" assert power(2, -1.0) == Ok(0.5)\n"
|
|
246
|
+
" ```\n"
|
|
247
|
+
"\n"
|
|
248
|
+
" ```gleam\n"
|
|
249
|
+
" assert power(2, 2.0) == Ok(4.0)\n"
|
|
250
|
+
" ```\n"
|
|
251
|
+
"\n"
|
|
252
|
+
" ```gleam\n"
|
|
253
|
+
" assert power(8, 1.5) == Ok(22.627416997969522)\n"
|
|
254
|
+
" ```\n"
|
|
255
|
+
"\n"
|
|
256
|
+
" ```gleam\n"
|
|
257
|
+
" assert 4 |> power(of: 2.0) == Ok(16.0)\n"
|
|
258
|
+
" ```\n"
|
|
259
|
+
"\n"
|
|
260
|
+
" ```gleam\n"
|
|
261
|
+
" assert power(-1, 0.5) == Error(Nil)\n"
|
|
262
|
+
" ```\n"
|
|
263
|
+
).
|
|
264
|
+
-spec power(integer(), float()) -> {ok, float()} | {error, nil}.
|
|
265
|
+
power(Base, Exponent) ->
|
|
266
|
+
_pipe = Base,
|
|
267
|
+
_pipe@1 = erlang:float(_pipe),
|
|
268
|
+
gleam@float:power(_pipe@1, Exponent).
|
|
269
|
+
|
|
270
|
+
-file("src/gleam/int.gleam", 78).
|
|
271
|
+
?DOC(
|
|
272
|
+
" Returns the square root of the input as a `Float`.\n"
|
|
273
|
+
"\n"
|
|
274
|
+
" ## Examples\n"
|
|
275
|
+
"\n"
|
|
276
|
+
" ```gleam\n"
|
|
277
|
+
" assert square_root(4) == Ok(2.0)\n"
|
|
278
|
+
" ```\n"
|
|
279
|
+
"\n"
|
|
280
|
+
" ```gleam\n"
|
|
281
|
+
" assert square_root(-16) == Error(Nil)\n"
|
|
282
|
+
" ```\n"
|
|
283
|
+
).
|
|
284
|
+
-spec square_root(integer()) -> {ok, float()} | {error, nil}.
|
|
285
|
+
square_root(X) ->
|
|
286
|
+
_pipe = X,
|
|
287
|
+
_pipe@1 = erlang:float(_pipe),
|
|
288
|
+
gleam@float:square_root(_pipe@1).
|
|
289
|
+
|
|
290
|
+
-file("src/gleam/int.gleam", 292).
|
|
291
|
+
?DOC(
|
|
292
|
+
" Compares two ints, returning an order.\n"
|
|
293
|
+
"\n"
|
|
294
|
+
" ## Examples\n"
|
|
295
|
+
"\n"
|
|
296
|
+
" ```gleam\n"
|
|
297
|
+
" assert compare(2, 3) == Lt\n"
|
|
298
|
+
" ```\n"
|
|
299
|
+
"\n"
|
|
300
|
+
" ```gleam\n"
|
|
301
|
+
" assert compare(4, 3) == Gt\n"
|
|
302
|
+
" ```\n"
|
|
303
|
+
"\n"
|
|
304
|
+
" ```gleam\n"
|
|
305
|
+
" assert compare(3, 3) == Eq\n"
|
|
306
|
+
" ```\n"
|
|
307
|
+
).
|
|
308
|
+
-spec compare(integer(), integer()) -> gleam@order:order().
|
|
309
|
+
compare(A, B) ->
|
|
310
|
+
case A =:= B of
|
|
311
|
+
true ->
|
|
312
|
+
eq;
|
|
313
|
+
|
|
314
|
+
false ->
|
|
315
|
+
case A < B of
|
|
316
|
+
true ->
|
|
317
|
+
lt;
|
|
318
|
+
|
|
319
|
+
false ->
|
|
320
|
+
gt
|
|
321
|
+
end
|
|
322
|
+
end.
|
|
323
|
+
|
|
324
|
+
-file("src/gleam/int.gleam", 311).
|
|
325
|
+
?DOC(
|
|
326
|
+
" Compares two ints, returning the smaller of the two.\n"
|
|
327
|
+
"\n"
|
|
328
|
+
" ## Examples\n"
|
|
329
|
+
"\n"
|
|
330
|
+
" ```gleam\n"
|
|
331
|
+
" assert min(2, 3) == 2\n"
|
|
332
|
+
" ```\n"
|
|
333
|
+
).
|
|
334
|
+
-spec min(integer(), integer()) -> integer().
|
|
335
|
+
min(A, B) ->
|
|
336
|
+
case A < B of
|
|
337
|
+
true ->
|
|
338
|
+
A;
|
|
339
|
+
|
|
340
|
+
false ->
|
|
341
|
+
B
|
|
342
|
+
end.
|
|
343
|
+
|
|
344
|
+
-file("src/gleam/int.gleam", 326).
|
|
345
|
+
?DOC(
|
|
346
|
+
" Compares two ints, returning the larger of the two.\n"
|
|
347
|
+
"\n"
|
|
348
|
+
" ## Examples\n"
|
|
349
|
+
"\n"
|
|
350
|
+
" ```gleam\n"
|
|
351
|
+
" assert max(2, 3) == 3\n"
|
|
352
|
+
" ```\n"
|
|
353
|
+
).
|
|
354
|
+
-spec max(integer(), integer()) -> integer().
|
|
355
|
+
max(A, B) ->
|
|
356
|
+
case A > B of
|
|
357
|
+
true ->
|
|
358
|
+
A;
|
|
359
|
+
|
|
360
|
+
false ->
|
|
361
|
+
B
|
|
362
|
+
end.
|
|
363
|
+
|
|
364
|
+
-file("src/gleam/int.gleam", 269).
|
|
365
|
+
?DOC(
|
|
366
|
+
" Restricts an int between two bounds.\n"
|
|
367
|
+
"\n"
|
|
368
|
+
" Note: If the `min` argument is larger than the `max` argument then they\n"
|
|
369
|
+
" will be swapped, so the minimum bound is always lower than the maximum\n"
|
|
370
|
+
" bound.\n"
|
|
371
|
+
"\n"
|
|
372
|
+
" ## Examples\n"
|
|
373
|
+
"\n"
|
|
374
|
+
" ```gleam\n"
|
|
375
|
+
" assert clamp(40, min: 50, max: 60) == 50\n"
|
|
376
|
+
" ```\n"
|
|
377
|
+
"\n"
|
|
378
|
+
" ```gleam\n"
|
|
379
|
+
" assert clamp(40, min: 50, max: 30) == 40\n"
|
|
380
|
+
" ```\n"
|
|
381
|
+
).
|
|
382
|
+
-spec clamp(integer(), integer(), integer()) -> integer().
|
|
383
|
+
clamp(X, Min_bound, Max_bound) ->
|
|
384
|
+
case Min_bound >= Max_bound of
|
|
385
|
+
true ->
|
|
386
|
+
_pipe = X,
|
|
387
|
+
_pipe@1 = min(_pipe, Min_bound),
|
|
388
|
+
max(_pipe@1, Max_bound);
|
|
389
|
+
|
|
390
|
+
false ->
|
|
391
|
+
_pipe@2 = X,
|
|
392
|
+
_pipe@3 = min(_pipe@2, Max_bound),
|
|
393
|
+
max(_pipe@3, Min_bound)
|
|
394
|
+
end.
|
|
395
|
+
|
|
396
|
+
-file("src/gleam/int.gleam", 345).
|
|
397
|
+
?DOC(
|
|
398
|
+
" Returns whether the value provided is even.\n"
|
|
399
|
+
"\n"
|
|
400
|
+
" ## Examples\n"
|
|
401
|
+
"\n"
|
|
402
|
+
" ```gleam\n"
|
|
403
|
+
" assert is_even(2)\n"
|
|
404
|
+
" ```\n"
|
|
405
|
+
"\n"
|
|
406
|
+
" ```gleam\n"
|
|
407
|
+
" assert !is_even(3)\n"
|
|
408
|
+
" ```\n"
|
|
409
|
+
).
|
|
410
|
+
-spec is_even(integer()) -> boolean().
|
|
411
|
+
is_even(X) ->
|
|
412
|
+
(X rem 2) =:= 0.
|
|
413
|
+
|
|
414
|
+
-file("src/gleam/int.gleam", 361).
|
|
415
|
+
?DOC(
|
|
416
|
+
" Returns whether the value provided is odd.\n"
|
|
417
|
+
"\n"
|
|
418
|
+
" ## Examples\n"
|
|
419
|
+
"\n"
|
|
420
|
+
" ```gleam\n"
|
|
421
|
+
" assert is_odd(3)\n"
|
|
422
|
+
" ```\n"
|
|
423
|
+
"\n"
|
|
424
|
+
" ```gleam\n"
|
|
425
|
+
" assert !is_odd(2)\n"
|
|
426
|
+
" ```\n"
|
|
427
|
+
).
|
|
428
|
+
-spec is_odd(integer()) -> boolean().
|
|
429
|
+
is_odd(X) ->
|
|
430
|
+
(X rem 2) /= 0.
|
|
431
|
+
|
|
432
|
+
-file("src/gleam/int.gleam", 373).
|
|
433
|
+
?DOC(
|
|
434
|
+
" Returns the negative of the value provided.\n"
|
|
435
|
+
"\n"
|
|
436
|
+
" ## Examples\n"
|
|
437
|
+
"\n"
|
|
438
|
+
" ```gleam\n"
|
|
439
|
+
" assert negate(1) == -1\n"
|
|
440
|
+
" ```\n"
|
|
441
|
+
).
|
|
442
|
+
-spec negate(integer()) -> integer().
|
|
443
|
+
negate(X) ->
|
|
444
|
+
-1 * X.
|
|
445
|
+
|
|
446
|
+
-file("src/gleam/int.gleam", 389).
|
|
447
|
+
-spec sum_loop(list(integer()), integer()) -> integer().
|
|
448
|
+
sum_loop(Numbers, Initial) ->
|
|
449
|
+
case Numbers of
|
|
450
|
+
[First | Rest] ->
|
|
451
|
+
sum_loop(Rest, First + Initial);
|
|
452
|
+
|
|
453
|
+
[] ->
|
|
454
|
+
Initial
|
|
455
|
+
end.
|
|
456
|
+
|
|
457
|
+
-file("src/gleam/int.gleam", 385).
|
|
458
|
+
?DOC(
|
|
459
|
+
" Sums a list of ints.\n"
|
|
460
|
+
"\n"
|
|
461
|
+
" ## Example\n"
|
|
462
|
+
"\n"
|
|
463
|
+
" ```gleam\n"
|
|
464
|
+
" assert sum([1, 2, 3]) == 6\n"
|
|
465
|
+
" ```\n"
|
|
466
|
+
).
|
|
467
|
+
-spec sum(list(integer())) -> integer().
|
|
468
|
+
sum(Numbers) ->
|
|
469
|
+
sum_loop(Numbers, 0).
|
|
470
|
+
|
|
471
|
+
-file("src/gleam/int.gleam", 408).
|
|
472
|
+
-spec product_loop(list(integer()), integer()) -> integer().
|
|
473
|
+
product_loop(Numbers, Initial) ->
|
|
474
|
+
case Numbers of
|
|
475
|
+
[First | Rest] ->
|
|
476
|
+
product_loop(Rest, First * Initial);
|
|
477
|
+
|
|
478
|
+
[] ->
|
|
479
|
+
Initial
|
|
480
|
+
end.
|
|
481
|
+
|
|
482
|
+
-file("src/gleam/int.gleam", 404).
|
|
483
|
+
?DOC(
|
|
484
|
+
" Multiplies a list of ints and returns the product.\n"
|
|
485
|
+
"\n"
|
|
486
|
+
" ## Example\n"
|
|
487
|
+
"\n"
|
|
488
|
+
" ```gleam\n"
|
|
489
|
+
" assert product([2, 3, 4]) == 24\n"
|
|
490
|
+
" ```\n"
|
|
491
|
+
).
|
|
492
|
+
-spec product(list(integer())) -> integer().
|
|
493
|
+
product(Numbers) ->
|
|
494
|
+
product_loop(Numbers, 1).
|
|
495
|
+
|
|
496
|
+
-file("src/gleam/int.gleam", 436).
|
|
497
|
+
?DOC(
|
|
498
|
+
" Generates a random int between zero and the given maximum.\n"
|
|
499
|
+
"\n"
|
|
500
|
+
" The lower number is inclusive, the upper number is exclusive.\n"
|
|
501
|
+
"\n"
|
|
502
|
+
" ## Examples\n"
|
|
503
|
+
"\n"
|
|
504
|
+
" ```gleam\n"
|
|
505
|
+
" random(10)\n"
|
|
506
|
+
" // -> 4\n"
|
|
507
|
+
" ```\n"
|
|
508
|
+
"\n"
|
|
509
|
+
" ```gleam\n"
|
|
510
|
+
" random(1)\n"
|
|
511
|
+
" // -> 0\n"
|
|
512
|
+
" ```\n"
|
|
513
|
+
"\n"
|
|
514
|
+
" ```gleam\n"
|
|
515
|
+
" random(-1)\n"
|
|
516
|
+
" // -> -1\n"
|
|
517
|
+
" ```\n"
|
|
518
|
+
).
|
|
519
|
+
-spec random(integer()) -> integer().
|
|
520
|
+
random(Max) ->
|
|
521
|
+
_pipe = (rand:uniform() * erlang:float(Max)),
|
|
522
|
+
_pipe@1 = math:floor(_pipe),
|
|
523
|
+
erlang:round(_pipe@1).
|
|
524
|
+
|
|
525
|
+
-file("src/gleam/int.gleam", 465).
|
|
526
|
+
?DOC(
|
|
527
|
+
" Performs a truncated integer division.\n"
|
|
528
|
+
"\n"
|
|
529
|
+
" Returns division of the inputs as a `Result`: If the given divisor equals\n"
|
|
530
|
+
" `0`, this function returns an `Error`.\n"
|
|
531
|
+
"\n"
|
|
532
|
+
" ## Examples\n"
|
|
533
|
+
"\n"
|
|
534
|
+
" ```gleam\n"
|
|
535
|
+
" assert divide(0, 1) == Ok(0)\n"
|
|
536
|
+
" ```\n"
|
|
537
|
+
"\n"
|
|
538
|
+
" ```gleam\n"
|
|
539
|
+
" assert divide(1, 0) == Error(Nil)\n"
|
|
540
|
+
" ```\n"
|
|
541
|
+
"\n"
|
|
542
|
+
" ```gleam\n"
|
|
543
|
+
" assert divide(5, 2) == Ok(2)\n"
|
|
544
|
+
" ```\n"
|
|
545
|
+
"\n"
|
|
546
|
+
" ```gleam\n"
|
|
547
|
+
" assert divide(-99, 2) == Ok(-49)\n"
|
|
548
|
+
" ```\n"
|
|
549
|
+
).
|
|
550
|
+
-spec divide(integer(), integer()) -> {ok, integer()} | {error, nil}.
|
|
551
|
+
divide(Dividend, Divisor) ->
|
|
552
|
+
case Divisor of
|
|
553
|
+
0 ->
|
|
554
|
+
{error, nil};
|
|
555
|
+
|
|
556
|
+
Divisor@1 ->
|
|
557
|
+
{ok, case Divisor@1 of
|
|
558
|
+
0 -> 0;
|
|
559
|
+
Gleam@denominator -> Dividend div Gleam@denominator
|
|
560
|
+
end}
|
|
561
|
+
end.
|
|
562
|
+
|
|
563
|
+
-file("src/gleam/int.gleam", 510).
|
|
564
|
+
?DOC(
|
|
565
|
+
" Computes the remainder of an integer division of inputs as a `Result`.\n"
|
|
566
|
+
"\n"
|
|
567
|
+
" Returns division of the inputs as a `Result`: If the given divisor equals\n"
|
|
568
|
+
" `0`, this function returns an `Error`.\n"
|
|
569
|
+
"\n"
|
|
570
|
+
" Most of the time you will want to use the `%` operator instead of this\n"
|
|
571
|
+
" function.\n"
|
|
572
|
+
"\n"
|
|
573
|
+
" ## Examples\n"
|
|
574
|
+
"\n"
|
|
575
|
+
" ```gleam\n"
|
|
576
|
+
" assert remainder(3, 2) == Ok(1)\n"
|
|
577
|
+
" ```\n"
|
|
578
|
+
"\n"
|
|
579
|
+
" ```gleam\n"
|
|
580
|
+
" assert remainder(1, 0) == Error(Nil)\n"
|
|
581
|
+
" ```\n"
|
|
582
|
+
"\n"
|
|
583
|
+
" ```gleam\n"
|
|
584
|
+
" assert remainder(10, -1) == Ok(0)\n"
|
|
585
|
+
" ```\n"
|
|
586
|
+
"\n"
|
|
587
|
+
" ```gleam\n"
|
|
588
|
+
" assert remainder(13, by: 3) == Ok(1)\n"
|
|
589
|
+
" ```\n"
|
|
590
|
+
"\n"
|
|
591
|
+
" ```gleam\n"
|
|
592
|
+
" assert remainder(-13, by: 3) == Ok(-1)\n"
|
|
593
|
+
" ```\n"
|
|
594
|
+
"\n"
|
|
595
|
+
" ```gleam\n"
|
|
596
|
+
" assert remainder(13, by: -3) == Ok(1)\n"
|
|
597
|
+
" ```\n"
|
|
598
|
+
"\n"
|
|
599
|
+
" ```gleam\n"
|
|
600
|
+
" assert remainder(-13, by: -3) == Ok(-1)\n"
|
|
601
|
+
" ```\n"
|
|
602
|
+
).
|
|
603
|
+
-spec remainder(integer(), integer()) -> {ok, integer()} | {error, nil}.
|
|
604
|
+
remainder(Dividend, Divisor) ->
|
|
605
|
+
case Divisor of
|
|
606
|
+
0 ->
|
|
607
|
+
{error, nil};
|
|
608
|
+
|
|
609
|
+
Divisor@1 ->
|
|
610
|
+
{ok, case Divisor@1 of
|
|
611
|
+
0 -> 0;
|
|
612
|
+
Gleam@denominator -> Dividend rem Gleam@denominator
|
|
613
|
+
end}
|
|
614
|
+
end.
|
|
615
|
+
|
|
616
|
+
-file("src/gleam/int.gleam", 551).
|
|
617
|
+
?DOC(
|
|
618
|
+
" Computes the modulo of an integer division of inputs as a `Result`.\n"
|
|
619
|
+
"\n"
|
|
620
|
+
" Returns division of the inputs as a `Result`: If the given divisor equals\n"
|
|
621
|
+
" `0`, this function returns an `Error`.\n"
|
|
622
|
+
"\n"
|
|
623
|
+
" Note that this is different from `int.remainder` and `%` in that the\n"
|
|
624
|
+
" computed value will always have the same sign as the `divisor`.\n"
|
|
625
|
+
"\n"
|
|
626
|
+
" ## Examples\n"
|
|
627
|
+
"\n"
|
|
628
|
+
" ```gleam\n"
|
|
629
|
+
" assert modulo(3, 2) == Ok(1)\n"
|
|
630
|
+
" ```\n"
|
|
631
|
+
"\n"
|
|
632
|
+
" ```gleam\n"
|
|
633
|
+
" assert modulo(1, 0) == Error(Nil)\n"
|
|
634
|
+
" ```\n"
|
|
635
|
+
"\n"
|
|
636
|
+
" ```gleam\n"
|
|
637
|
+
" assert modulo(10, -1) == Ok(0)\n"
|
|
638
|
+
" ```\n"
|
|
639
|
+
"\n"
|
|
640
|
+
" ```gleam\n"
|
|
641
|
+
" assert modulo(13, by: 3) == Ok(1)\n"
|
|
642
|
+
" ```\n"
|
|
643
|
+
"\n"
|
|
644
|
+
" ```gleam\n"
|
|
645
|
+
" assert modulo(-13, by: 3) == Ok(2)\n"
|
|
646
|
+
" ```\n"
|
|
647
|
+
"\n"
|
|
648
|
+
" ```gleam\n"
|
|
649
|
+
" assert modulo(13, by: -3) == Ok(-2)\n"
|
|
650
|
+
" ```\n"
|
|
651
|
+
).
|
|
652
|
+
-spec modulo(integer(), integer()) -> {ok, integer()} | {error, nil}.
|
|
653
|
+
modulo(Dividend, Divisor) ->
|
|
654
|
+
case Divisor of
|
|
655
|
+
0 ->
|
|
656
|
+
{error, nil};
|
|
657
|
+
|
|
658
|
+
_ ->
|
|
659
|
+
Remainder = case Divisor of
|
|
660
|
+
0 -> 0;
|
|
661
|
+
Gleam@denominator -> Dividend rem Gleam@denominator
|
|
662
|
+
end,
|
|
663
|
+
case (Remainder * Divisor) < 0 of
|
|
664
|
+
true ->
|
|
665
|
+
{ok, Remainder + Divisor};
|
|
666
|
+
|
|
667
|
+
false ->
|
|
668
|
+
{ok, Remainder}
|
|
669
|
+
end
|
|
670
|
+
end.
|
|
671
|
+
|
|
672
|
+
-file("src/gleam/int.gleam", 591).
|
|
673
|
+
?DOC(
|
|
674
|
+
" Performs a *floored* integer division, which means that the result will\n"
|
|
675
|
+
" always be rounded towards negative infinity.\n"
|
|
676
|
+
"\n"
|
|
677
|
+
" If you want to perform truncated integer division (rounding towards zero),\n"
|
|
678
|
+
" use `int.divide()` or the `/` operator instead.\n"
|
|
679
|
+
"\n"
|
|
680
|
+
" Returns division of the inputs as a `Result`: If the given divisor equals\n"
|
|
681
|
+
" `0`, this function returns an `Error`.\n"
|
|
682
|
+
"\n"
|
|
683
|
+
" ## Examples\n"
|
|
684
|
+
"\n"
|
|
685
|
+
" ```gleam\n"
|
|
686
|
+
" assert floor_divide(1, 0) == Error(Nil)\n"
|
|
687
|
+
" ```\n"
|
|
688
|
+
"\n"
|
|
689
|
+
" ```gleam\n"
|
|
690
|
+
" assert floor_divide(5, 2) == Ok(2)\n"
|
|
691
|
+
" ```\n"
|
|
692
|
+
"\n"
|
|
693
|
+
" ```gleam\n"
|
|
694
|
+
" assert floor_divide(6, -4) == Ok(-2)\n"
|
|
695
|
+
" ```\n"
|
|
696
|
+
"\n"
|
|
697
|
+
" ```gleam\n"
|
|
698
|
+
" assert floor_divide(-99, 2) == Ok(-50)\n"
|
|
699
|
+
" ```\n"
|
|
700
|
+
).
|
|
701
|
+
-spec floor_divide(integer(), integer()) -> {ok, integer()} | {error, nil}.
|
|
702
|
+
floor_divide(Dividend, Divisor) ->
|
|
703
|
+
case Divisor of
|
|
704
|
+
0 ->
|
|
705
|
+
{error, nil};
|
|
706
|
+
|
|
707
|
+
Divisor@1 ->
|
|
708
|
+
case ((Dividend * Divisor@1) < 0) andalso ((case Divisor@1 of
|
|
709
|
+
0 -> 0;
|
|
710
|
+
Gleam@denominator -> Dividend rem Gleam@denominator
|
|
711
|
+
end) /= 0) of
|
|
712
|
+
true ->
|
|
713
|
+
{ok, (case Divisor@1 of
|
|
714
|
+
0 -> 0;
|
|
715
|
+
Gleam@denominator@1 -> Dividend div Gleam@denominator@1
|
|
716
|
+
end) - 1};
|
|
717
|
+
|
|
718
|
+
false ->
|
|
719
|
+
{ok, case Divisor@1 of
|
|
720
|
+
0 -> 0;
|
|
721
|
+
Gleam@denominator@2 -> Dividend div Gleam@denominator@2
|
|
722
|
+
end}
|
|
723
|
+
end
|
|
724
|
+
end.
|
|
725
|
+
|
|
726
|
+
-file("src/gleam/int.gleam", 622).
|
|
727
|
+
?DOC(
|
|
728
|
+
" Adds two integers together.\n"
|
|
729
|
+
"\n"
|
|
730
|
+
" It's the function equivalent of the `+` operator.\n"
|
|
731
|
+
" This function is useful in higher order functions or pipes.\n"
|
|
732
|
+
"\n"
|
|
733
|
+
" ## Examples\n"
|
|
734
|
+
"\n"
|
|
735
|
+
" ```gleam\n"
|
|
736
|
+
" assert add(1, 2) == 3\n"
|
|
737
|
+
" ```\n"
|
|
738
|
+
"\n"
|
|
739
|
+
" ```gleam\n"
|
|
740
|
+
" import gleam/list\n"
|
|
741
|
+
" assert list.fold([1, 2, 3], 0, add) == 6\n"
|
|
742
|
+
" ```\n"
|
|
743
|
+
"\n"
|
|
744
|
+
" ```gleam\n"
|
|
745
|
+
" assert 3 |> add(2) == 5\n"
|
|
746
|
+
" ```\n"
|
|
747
|
+
).
|
|
748
|
+
-spec add(integer(), integer()) -> integer().
|
|
749
|
+
add(A, B) ->
|
|
750
|
+
A + B.
|
|
751
|
+
|
|
752
|
+
-file("src/gleam/int.gleam", 647).
|
|
753
|
+
?DOC(
|
|
754
|
+
" Multiplies two integers together.\n"
|
|
755
|
+
"\n"
|
|
756
|
+
" It's the function equivalent of the `*` operator.\n"
|
|
757
|
+
" This function is useful in higher order functions or pipes.\n"
|
|
758
|
+
"\n"
|
|
759
|
+
" ## Examples\n"
|
|
760
|
+
"\n"
|
|
761
|
+
" ```gleam\n"
|
|
762
|
+
" assert multiply(2, 4) == 8\n"
|
|
763
|
+
" ```\n"
|
|
764
|
+
"\n"
|
|
765
|
+
" ```gleam\n"
|
|
766
|
+
" import gleam/list\n"
|
|
767
|
+
"\n"
|
|
768
|
+
" assert list.fold([2, 3, 4], 1, multiply) == 24\n"
|
|
769
|
+
" ```\n"
|
|
770
|
+
"\n"
|
|
771
|
+
" ```gleam\n"
|
|
772
|
+
" assert 3 |> multiply(2) == 6\n"
|
|
773
|
+
" ```\n"
|
|
774
|
+
).
|
|
775
|
+
-spec multiply(integer(), integer()) -> integer().
|
|
776
|
+
multiply(A, B) ->
|
|
777
|
+
A * B.
|
|
778
|
+
|
|
779
|
+
-file("src/gleam/int.gleam", 676).
|
|
780
|
+
?DOC(
|
|
781
|
+
" Subtracts one int from another.\n"
|
|
782
|
+
"\n"
|
|
783
|
+
" It's the function equivalent of the `-` operator.\n"
|
|
784
|
+
" This function is useful in higher order functions or pipes.\n"
|
|
785
|
+
"\n"
|
|
786
|
+
" ## Examples\n"
|
|
787
|
+
"\n"
|
|
788
|
+
" ```gleam\n"
|
|
789
|
+
" assert subtract(3, 1) == 2\n"
|
|
790
|
+
" ```\n"
|
|
791
|
+
"\n"
|
|
792
|
+
" ```gleam\n"
|
|
793
|
+
" import gleam/list\n"
|
|
794
|
+
"\n"
|
|
795
|
+
" assert list.fold([1, 2, 3], 10, subtract) == 4\n"
|
|
796
|
+
" ```\n"
|
|
797
|
+
"\n"
|
|
798
|
+
" ```gleam\n"
|
|
799
|
+
" assert 3 |> subtract(2) == 1\n"
|
|
800
|
+
" ```\n"
|
|
801
|
+
"\n"
|
|
802
|
+
" ```gleam\n"
|
|
803
|
+
" assert 3 |> subtract(2, _) == -1\n"
|
|
804
|
+
" ```\n"
|
|
805
|
+
).
|
|
806
|
+
-spec subtract(integer(), integer()) -> integer().
|
|
807
|
+
subtract(A, B) ->
|
|
808
|
+
A - B.
|
|
809
|
+
|
|
810
|
+
-file("src/gleam/int.gleam", 695).
|
|
811
|
+
?DOC(
|
|
812
|
+
" Calculates the bitwise AND of its arguments.\n"
|
|
813
|
+
"\n"
|
|
814
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
815
|
+
" bits as ints with bitwise functions.\n"
|
|
816
|
+
"\n"
|
|
817
|
+
" ## Target specific behaviour\n"
|
|
818
|
+
"\n"
|
|
819
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
820
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
821
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
822
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
823
|
+
" provides faster bitwise operations.\n"
|
|
824
|
+
).
|
|
825
|
+
-spec bitwise_and(integer(), integer()) -> integer().
|
|
826
|
+
bitwise_and(X, Y) ->
|
|
827
|
+
erlang:'band'(X, Y).
|
|
828
|
+
|
|
829
|
+
-file("src/gleam/int.gleam", 712).
|
|
830
|
+
?DOC(
|
|
831
|
+
" Calculates the bitwise NOT of its argument.\n"
|
|
832
|
+
"\n"
|
|
833
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
834
|
+
" bits as ints with bitwise functions.\n"
|
|
835
|
+
"\n"
|
|
836
|
+
" ## Target specific behaviour\n"
|
|
837
|
+
"\n"
|
|
838
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
839
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
840
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
841
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
842
|
+
" provides faster bitwise operations.\n"
|
|
843
|
+
).
|
|
844
|
+
-spec bitwise_not(integer()) -> integer().
|
|
845
|
+
bitwise_not(X) ->
|
|
846
|
+
erlang:'bnot'(X).
|
|
847
|
+
|
|
848
|
+
-file("src/gleam/int.gleam", 729).
|
|
849
|
+
?DOC(
|
|
850
|
+
" Calculates the bitwise OR of its arguments.\n"
|
|
851
|
+
"\n"
|
|
852
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
853
|
+
" bits as ints with bitwise functions.\n"
|
|
854
|
+
"\n"
|
|
855
|
+
" ## Target specific behaviour\n"
|
|
856
|
+
"\n"
|
|
857
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
858
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
859
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
860
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
861
|
+
" provides faster bitwise operations.\n"
|
|
862
|
+
).
|
|
863
|
+
-spec bitwise_or(integer(), integer()) -> integer().
|
|
864
|
+
bitwise_or(X, Y) ->
|
|
865
|
+
erlang:'bor'(X, Y).
|
|
866
|
+
|
|
867
|
+
-file("src/gleam/int.gleam", 746).
|
|
868
|
+
?DOC(
|
|
869
|
+
" Calculates the bitwise XOR of its arguments.\n"
|
|
870
|
+
"\n"
|
|
871
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
872
|
+
" bits as ints with bitwise functions.\n"
|
|
873
|
+
"\n"
|
|
874
|
+
" ## Target specific behaviour\n"
|
|
875
|
+
"\n"
|
|
876
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
877
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
878
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
879
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
880
|
+
" provides faster bitwise operations.\n"
|
|
881
|
+
).
|
|
882
|
+
-spec bitwise_exclusive_or(integer(), integer()) -> integer().
|
|
883
|
+
bitwise_exclusive_or(X, Y) ->
|
|
884
|
+
erlang:'bxor'(X, Y).
|
|
885
|
+
|
|
886
|
+
-file("src/gleam/int.gleam", 763).
|
|
887
|
+
?DOC(
|
|
888
|
+
" Calculates the result of an arithmetic left bitshift.\n"
|
|
889
|
+
"\n"
|
|
890
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
891
|
+
" bits as ints with bitwise functions.\n"
|
|
892
|
+
"\n"
|
|
893
|
+
" ## Target specific behaviour\n"
|
|
894
|
+
"\n"
|
|
895
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
896
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
897
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
898
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
899
|
+
" provides faster bitwise operations.\n"
|
|
900
|
+
).
|
|
901
|
+
-spec bitwise_shift_left(integer(), integer()) -> integer().
|
|
902
|
+
bitwise_shift_left(X, Y) ->
|
|
903
|
+
erlang:'bsl'(X, Y).
|
|
904
|
+
|
|
905
|
+
-file("src/gleam/int.gleam", 780).
|
|
906
|
+
?DOC(
|
|
907
|
+
" Calculates the result of an arithmetic right bitshift.\n"
|
|
908
|
+
"\n"
|
|
909
|
+
" Most the time you should use the bit array syntaxes instead of manipulating\n"
|
|
910
|
+
" bits as ints with bitwise functions.\n"
|
|
911
|
+
"\n"
|
|
912
|
+
" ## Target specific behaviour\n"
|
|
913
|
+
"\n"
|
|
914
|
+
" The exact behaviour of this function depends on the target platform.\n"
|
|
915
|
+
" On Erlang it is equivalent to bitwise operations on ints, on JavaScript it\n"
|
|
916
|
+
" is equivalent to bitwise operations on big-ints. If you need to avoid the\n"
|
|
917
|
+
" overhead of big-ints on JavaScript use bit arrays or another package that\n"
|
|
918
|
+
" provides faster bitwise operations.\n"
|
|
919
|
+
).
|
|
920
|
+
-spec bitwise_shift_right(integer(), integer()) -> integer().
|
|
921
|
+
bitwise_shift_right(X, Y) ->
|
|
922
|
+
erlang:'bsr'(X, Y).
|
|
923
|
+
|
|
924
|
+
-file("src/gleam/int.gleam", 813).
|
|
925
|
+
-spec range_loop(
|
|
926
|
+
integer(),
|
|
927
|
+
integer(),
|
|
928
|
+
integer(),
|
|
929
|
+
CM,
|
|
930
|
+
fun((CM, integer()) -> CM)
|
|
931
|
+
) -> CM.
|
|
932
|
+
range_loop(Current, Stop, Increment, Acc, Reducer) ->
|
|
933
|
+
case Current =:= Stop of
|
|
934
|
+
true ->
|
|
935
|
+
Acc;
|
|
936
|
+
|
|
937
|
+
false ->
|
|
938
|
+
Acc@1 = Reducer(Acc, Current),
|
|
939
|
+
Current@1 = Current + Increment,
|
|
940
|
+
range_loop(Current@1, Stop, Increment, Acc@1, Reducer)
|
|
941
|
+
end.
|
|
942
|
+
|
|
943
|
+
-file("src/gleam/int.gleam", 800).
|
|
944
|
+
?DOC(
|
|
945
|
+
" Run a function for each int between ints `from` and `to`.\n"
|
|
946
|
+
"\n"
|
|
947
|
+
" `from` is inclusive, and `to` is exclusive.\n"
|
|
948
|
+
"\n"
|
|
949
|
+
" ## Examples\n"
|
|
950
|
+
"\n"
|
|
951
|
+
" ```gleam\n"
|
|
952
|
+
" assert\n"
|
|
953
|
+
" range(from: 0, to: 3, with: \"\", run: fn(acc, i) {\n"
|
|
954
|
+
" acc <> to_string(i)\n"
|
|
955
|
+
" })\n"
|
|
956
|
+
" == \"012\"\n"
|
|
957
|
+
" ```\n"
|
|
958
|
+
"\n"
|
|
959
|
+
" ```gleam\n"
|
|
960
|
+
" assert range(from: 1, to: -2, with: [], run: list.prepend) == [-1, 0, 1]\n"
|
|
961
|
+
" ```\n"
|
|
962
|
+
).
|
|
963
|
+
-spec range(integer(), integer(), CL, fun((CL, integer()) -> CL)) -> CL.
|
|
964
|
+
range(Start, Stop, Acc, Reducer) ->
|
|
965
|
+
Increment = case Start < Stop of
|
|
966
|
+
true ->
|
|
967
|
+
1;
|
|
968
|
+
|
|
969
|
+
false ->
|
|
970
|
+
-1
|
|
971
|
+
end,
|
|
972
|
+
range_loop(Start, Stop, Increment, Acc, Reducer).
|