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,764 @@
|
|
|
1
|
+
import { Ok, Error, Empty as $Empty, remainderInt, divideInt } from "../gleam.mjs";
|
|
2
|
+
import * as $float from "../gleam/float.mjs";
|
|
3
|
+
import * as $order from "../gleam/order.mjs";
|
|
4
|
+
import {
|
|
5
|
+
parse_int as parse,
|
|
6
|
+
int_from_base_string as do_base_parse,
|
|
7
|
+
to_string,
|
|
8
|
+
int_to_base_string as do_to_base_string,
|
|
9
|
+
identity as to_float,
|
|
10
|
+
bitwise_and,
|
|
11
|
+
bitwise_not,
|
|
12
|
+
bitwise_or,
|
|
13
|
+
bitwise_exclusive_or,
|
|
14
|
+
bitwise_shift_left,
|
|
15
|
+
bitwise_shift_right,
|
|
16
|
+
} from "../gleam_stdlib.mjs";
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
bitwise_and,
|
|
20
|
+
bitwise_exclusive_or,
|
|
21
|
+
bitwise_not,
|
|
22
|
+
bitwise_or,
|
|
23
|
+
bitwise_shift_left,
|
|
24
|
+
bitwise_shift_right,
|
|
25
|
+
parse,
|
|
26
|
+
to_float,
|
|
27
|
+
to_string,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Returns the absolute value of the input.
|
|
32
|
+
*
|
|
33
|
+
* ## Examples
|
|
34
|
+
*
|
|
35
|
+
* ```gleam
|
|
36
|
+
* assert absolute_value(-12) == 12
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ```gleam
|
|
40
|
+
* assert absolute_value(10) == 10
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function absolute_value(x) {
|
|
44
|
+
let $ = x >= 0;
|
|
45
|
+
if ($) {
|
|
46
|
+
return x;
|
|
47
|
+
} else {
|
|
48
|
+
return x * -1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Parses a given string as an int in a given base if possible.
|
|
54
|
+
* Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`.
|
|
55
|
+
*
|
|
56
|
+
* ## Examples
|
|
57
|
+
*
|
|
58
|
+
* ```gleam
|
|
59
|
+
* assert base_parse("10", 2) == Ok(2)
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* ```gleam
|
|
63
|
+
* assert base_parse("30", 16) == Ok(48)
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* ```gleam
|
|
67
|
+
* assert base_parse("1C", 36) == Ok(48)
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* ```gleam
|
|
71
|
+
* assert base_parse("48", 1) == Error(Nil)
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* ```gleam
|
|
75
|
+
* assert base_parse("48", 37) == Error(Nil)
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function base_parse(string, base) {
|
|
79
|
+
let $ = (base >= 2) && (base <= 36);
|
|
80
|
+
if ($) {
|
|
81
|
+
return do_base_parse(string, base);
|
|
82
|
+
} else {
|
|
83
|
+
return new Error(undefined);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Prints a given int to a string using the base number provided.
|
|
89
|
+
* Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`.
|
|
90
|
+
* For common bases (2, 8, 16, 36), use the `to_baseN` functions.
|
|
91
|
+
*
|
|
92
|
+
* ## Examples
|
|
93
|
+
*
|
|
94
|
+
* ```gleam
|
|
95
|
+
* assert to_base_string(2, 2) == Ok("10")
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* ```gleam
|
|
99
|
+
* assert to_base_string(48, 16) == Ok("30")
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* ```gleam
|
|
103
|
+
* assert to_base_string(48, 36) == Ok("1C")
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* ```gleam
|
|
107
|
+
* assert to_base_string(48, 1) == Error(Nil)
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* ```gleam
|
|
111
|
+
* assert to_base_string(48, 37) == Error(Nil)
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export function to_base_string(x, base) {
|
|
115
|
+
let $ = (base >= 2) && (base <= 36);
|
|
116
|
+
if ($) {
|
|
117
|
+
return new Ok(do_to_base_string(x, base));
|
|
118
|
+
} else {
|
|
119
|
+
return new Error(undefined);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Prints a given int to a string using base-2.
|
|
125
|
+
*
|
|
126
|
+
* ## Examples
|
|
127
|
+
*
|
|
128
|
+
* ```gleam
|
|
129
|
+
* assert to_base2(2) == "10"
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export function to_base2(x) {
|
|
133
|
+
return do_to_base_string(x, 2);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Prints a given int to a string using base-8.
|
|
138
|
+
*
|
|
139
|
+
* ## Examples
|
|
140
|
+
*
|
|
141
|
+
* ```gleam
|
|
142
|
+
* assert to_base8(15) == "17"
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export function to_base8(x) {
|
|
146
|
+
return do_to_base_string(x, 8);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Prints a given int to a string using base-16.
|
|
151
|
+
*
|
|
152
|
+
* ## Examples
|
|
153
|
+
*
|
|
154
|
+
* ```gleam
|
|
155
|
+
* assert to_base16(48) == "30"
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export function to_base16(x) {
|
|
159
|
+
return do_to_base_string(x, 16);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Prints a given int to a string using base-36.
|
|
164
|
+
*
|
|
165
|
+
* ## Examples
|
|
166
|
+
*
|
|
167
|
+
* ```gleam
|
|
168
|
+
* assert to_base36(48) == "1C"
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
export function to_base36(x) {
|
|
172
|
+
return do_to_base_string(x, 36);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Returns the result of the base being raised to the power of the
|
|
177
|
+
* exponent, as a `Float`.
|
|
178
|
+
*
|
|
179
|
+
* ## Examples
|
|
180
|
+
*
|
|
181
|
+
* ```gleam
|
|
182
|
+
* assert power(2, -1.0) == Ok(0.5)
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* ```gleam
|
|
186
|
+
* assert power(2, 2.0) == Ok(4.0)
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
189
|
+
* ```gleam
|
|
190
|
+
* assert power(8, 1.5) == Ok(22.627416997969522)
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* ```gleam
|
|
194
|
+
* assert 4 |> power(of: 2.0) == Ok(16.0)
|
|
195
|
+
* ```
|
|
196
|
+
*
|
|
197
|
+
* ```gleam
|
|
198
|
+
* assert power(-1, 0.5) == Error(Nil)
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export function power(base, exponent) {
|
|
202
|
+
let _pipe = base;
|
|
203
|
+
let _pipe$1 = to_float(_pipe);
|
|
204
|
+
return $float.power(_pipe$1, exponent);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Returns the square root of the input as a `Float`.
|
|
209
|
+
*
|
|
210
|
+
* ## Examples
|
|
211
|
+
*
|
|
212
|
+
* ```gleam
|
|
213
|
+
* assert square_root(4) == Ok(2.0)
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* ```gleam
|
|
217
|
+
* assert square_root(-16) == Error(Nil)
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export function square_root(x) {
|
|
221
|
+
let _pipe = x;
|
|
222
|
+
let _pipe$1 = to_float(_pipe);
|
|
223
|
+
return $float.square_root(_pipe$1);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Compares two ints, returning an order.
|
|
228
|
+
*
|
|
229
|
+
* ## Examples
|
|
230
|
+
*
|
|
231
|
+
* ```gleam
|
|
232
|
+
* assert compare(2, 3) == Lt
|
|
233
|
+
* ```
|
|
234
|
+
*
|
|
235
|
+
* ```gleam
|
|
236
|
+
* assert compare(4, 3) == Gt
|
|
237
|
+
* ```
|
|
238
|
+
*
|
|
239
|
+
* ```gleam
|
|
240
|
+
* assert compare(3, 3) == Eq
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
export function compare(a, b) {
|
|
244
|
+
let $ = a === b;
|
|
245
|
+
if ($) {
|
|
246
|
+
return new $order.Eq();
|
|
247
|
+
} else {
|
|
248
|
+
let $1 = a < b;
|
|
249
|
+
if ($1) {
|
|
250
|
+
return new $order.Lt();
|
|
251
|
+
} else {
|
|
252
|
+
return new $order.Gt();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Compares two ints, returning the smaller of the two.
|
|
259
|
+
*
|
|
260
|
+
* ## Examples
|
|
261
|
+
*
|
|
262
|
+
* ```gleam
|
|
263
|
+
* assert min(2, 3) == 2
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function min(a, b) {
|
|
267
|
+
let $ = a < b;
|
|
268
|
+
if ($) {
|
|
269
|
+
return a;
|
|
270
|
+
} else {
|
|
271
|
+
return b;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Compares two ints, returning the larger of the two.
|
|
277
|
+
*
|
|
278
|
+
* ## Examples
|
|
279
|
+
*
|
|
280
|
+
* ```gleam
|
|
281
|
+
* assert max(2, 3) == 3
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
export function max(a, b) {
|
|
285
|
+
let $ = a > b;
|
|
286
|
+
if ($) {
|
|
287
|
+
return a;
|
|
288
|
+
} else {
|
|
289
|
+
return b;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Restricts an int between two bounds.
|
|
295
|
+
*
|
|
296
|
+
* Note: If the `min` argument is larger than the `max` argument then they
|
|
297
|
+
* will be swapped, so the minimum bound is always lower than the maximum
|
|
298
|
+
* bound.
|
|
299
|
+
*
|
|
300
|
+
* ## Examples
|
|
301
|
+
*
|
|
302
|
+
* ```gleam
|
|
303
|
+
* assert clamp(40, min: 50, max: 60) == 50
|
|
304
|
+
* ```
|
|
305
|
+
*
|
|
306
|
+
* ```gleam
|
|
307
|
+
* assert clamp(40, min: 50, max: 30) == 40
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
export function clamp(x, min_bound, max_bound) {
|
|
311
|
+
let $ = min_bound >= max_bound;
|
|
312
|
+
if ($) {
|
|
313
|
+
let _pipe = x;
|
|
314
|
+
let _pipe$1 = min(_pipe, min_bound);
|
|
315
|
+
return max(_pipe$1, max_bound);
|
|
316
|
+
} else {
|
|
317
|
+
let _pipe = x;
|
|
318
|
+
let _pipe$1 = min(_pipe, max_bound);
|
|
319
|
+
return max(_pipe$1, min_bound);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Returns whether the value provided is even.
|
|
325
|
+
*
|
|
326
|
+
* ## Examples
|
|
327
|
+
*
|
|
328
|
+
* ```gleam
|
|
329
|
+
* assert is_even(2)
|
|
330
|
+
* ```
|
|
331
|
+
*
|
|
332
|
+
* ```gleam
|
|
333
|
+
* assert !is_even(3)
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
export function is_even(x) {
|
|
337
|
+
return (x % 2) === 0;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Returns whether the value provided is odd.
|
|
342
|
+
*
|
|
343
|
+
* ## Examples
|
|
344
|
+
*
|
|
345
|
+
* ```gleam
|
|
346
|
+
* assert is_odd(3)
|
|
347
|
+
* ```
|
|
348
|
+
*
|
|
349
|
+
* ```gleam
|
|
350
|
+
* assert !is_odd(2)
|
|
351
|
+
* ```
|
|
352
|
+
*/
|
|
353
|
+
export function is_odd(x) {
|
|
354
|
+
return (x % 2) !== 0;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Returns the negative of the value provided.
|
|
359
|
+
*
|
|
360
|
+
* ## Examples
|
|
361
|
+
*
|
|
362
|
+
* ```gleam
|
|
363
|
+
* assert negate(1) == -1
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
export function negate(x) {
|
|
367
|
+
return -1 * x;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function sum_loop(loop$numbers, loop$initial) {
|
|
371
|
+
while (true) {
|
|
372
|
+
let numbers = loop$numbers;
|
|
373
|
+
let initial = loop$initial;
|
|
374
|
+
if (numbers instanceof $Empty) {
|
|
375
|
+
return initial;
|
|
376
|
+
} else {
|
|
377
|
+
let first = numbers.head;
|
|
378
|
+
let rest = numbers.tail;
|
|
379
|
+
loop$numbers = rest;
|
|
380
|
+
loop$initial = first + initial;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Sums a list of ints.
|
|
387
|
+
*
|
|
388
|
+
* ## Example
|
|
389
|
+
*
|
|
390
|
+
* ```gleam
|
|
391
|
+
* assert sum([1, 2, 3]) == 6
|
|
392
|
+
* ```
|
|
393
|
+
*/
|
|
394
|
+
export function sum(numbers) {
|
|
395
|
+
return sum_loop(numbers, 0);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function product_loop(loop$numbers, loop$initial) {
|
|
399
|
+
while (true) {
|
|
400
|
+
let numbers = loop$numbers;
|
|
401
|
+
let initial = loop$initial;
|
|
402
|
+
if (numbers instanceof $Empty) {
|
|
403
|
+
return initial;
|
|
404
|
+
} else {
|
|
405
|
+
let first = numbers.head;
|
|
406
|
+
let rest = numbers.tail;
|
|
407
|
+
loop$numbers = rest;
|
|
408
|
+
loop$initial = first * initial;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Multiplies a list of ints and returns the product.
|
|
415
|
+
*
|
|
416
|
+
* ## Example
|
|
417
|
+
*
|
|
418
|
+
* ```gleam
|
|
419
|
+
* assert product([2, 3, 4]) == 24
|
|
420
|
+
* ```
|
|
421
|
+
*/
|
|
422
|
+
export function product(numbers) {
|
|
423
|
+
return product_loop(numbers, 1);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Generates a random int between zero and the given maximum.
|
|
428
|
+
*
|
|
429
|
+
* The lower number is inclusive, the upper number is exclusive.
|
|
430
|
+
*
|
|
431
|
+
* ## Examples
|
|
432
|
+
*
|
|
433
|
+
* ```gleam
|
|
434
|
+
* random(10)
|
|
435
|
+
* // -> 4
|
|
436
|
+
* ```
|
|
437
|
+
*
|
|
438
|
+
* ```gleam
|
|
439
|
+
* random(1)
|
|
440
|
+
* // -> 0
|
|
441
|
+
* ```
|
|
442
|
+
*
|
|
443
|
+
* ```gleam
|
|
444
|
+
* random(-1)
|
|
445
|
+
* // -> -1
|
|
446
|
+
* ```
|
|
447
|
+
*/
|
|
448
|
+
export function random(max) {
|
|
449
|
+
let _pipe = ($float.random() * to_float(max));
|
|
450
|
+
let _pipe$1 = $float.floor(_pipe);
|
|
451
|
+
return $float.round(_pipe$1);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Performs a truncated integer division.
|
|
456
|
+
*
|
|
457
|
+
* Returns division of the inputs as a `Result`: If the given divisor equals
|
|
458
|
+
* `0`, this function returns an `Error`.
|
|
459
|
+
*
|
|
460
|
+
* ## Examples
|
|
461
|
+
*
|
|
462
|
+
* ```gleam
|
|
463
|
+
* assert divide(0, 1) == Ok(0)
|
|
464
|
+
* ```
|
|
465
|
+
*
|
|
466
|
+
* ```gleam
|
|
467
|
+
* assert divide(1, 0) == Error(Nil)
|
|
468
|
+
* ```
|
|
469
|
+
*
|
|
470
|
+
* ```gleam
|
|
471
|
+
* assert divide(5, 2) == Ok(2)
|
|
472
|
+
* ```
|
|
473
|
+
*
|
|
474
|
+
* ```gleam
|
|
475
|
+
* assert divide(-99, 2) == Ok(-49)
|
|
476
|
+
* ```
|
|
477
|
+
*/
|
|
478
|
+
export function divide(dividend, divisor) {
|
|
479
|
+
if (divisor === 0) {
|
|
480
|
+
return new Error(undefined);
|
|
481
|
+
} else {
|
|
482
|
+
let divisor$1 = divisor;
|
|
483
|
+
return new Ok(divideInt(dividend, divisor$1));
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Computes the remainder of an integer division of inputs as a `Result`.
|
|
489
|
+
*
|
|
490
|
+
* Returns division of the inputs as a `Result`: If the given divisor equals
|
|
491
|
+
* `0`, this function returns an `Error`.
|
|
492
|
+
*
|
|
493
|
+
* Most of the time you will want to use the `%` operator instead of this
|
|
494
|
+
* function.
|
|
495
|
+
*
|
|
496
|
+
* ## Examples
|
|
497
|
+
*
|
|
498
|
+
* ```gleam
|
|
499
|
+
* assert remainder(3, 2) == Ok(1)
|
|
500
|
+
* ```
|
|
501
|
+
*
|
|
502
|
+
* ```gleam
|
|
503
|
+
* assert remainder(1, 0) == Error(Nil)
|
|
504
|
+
* ```
|
|
505
|
+
*
|
|
506
|
+
* ```gleam
|
|
507
|
+
* assert remainder(10, -1) == Ok(0)
|
|
508
|
+
* ```
|
|
509
|
+
*
|
|
510
|
+
* ```gleam
|
|
511
|
+
* assert remainder(13, by: 3) == Ok(1)
|
|
512
|
+
* ```
|
|
513
|
+
*
|
|
514
|
+
* ```gleam
|
|
515
|
+
* assert remainder(-13, by: 3) == Ok(-1)
|
|
516
|
+
* ```
|
|
517
|
+
*
|
|
518
|
+
* ```gleam
|
|
519
|
+
* assert remainder(13, by: -3) == Ok(1)
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* ```gleam
|
|
523
|
+
* assert remainder(-13, by: -3) == Ok(-1)
|
|
524
|
+
* ```
|
|
525
|
+
*/
|
|
526
|
+
export function remainder(dividend, divisor) {
|
|
527
|
+
if (divisor === 0) {
|
|
528
|
+
return new Error(undefined);
|
|
529
|
+
} else {
|
|
530
|
+
let divisor$1 = divisor;
|
|
531
|
+
return new Ok(remainderInt(dividend, divisor$1));
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Computes the modulo of an integer division of inputs as a `Result`.
|
|
537
|
+
*
|
|
538
|
+
* Returns division of the inputs as a `Result`: If the given divisor equals
|
|
539
|
+
* `0`, this function returns an `Error`.
|
|
540
|
+
*
|
|
541
|
+
* Note that this is different from `int.remainder` and `%` in that the
|
|
542
|
+
* computed value will always have the same sign as the `divisor`.
|
|
543
|
+
*
|
|
544
|
+
* ## Examples
|
|
545
|
+
*
|
|
546
|
+
* ```gleam
|
|
547
|
+
* assert modulo(3, 2) == Ok(1)
|
|
548
|
+
* ```
|
|
549
|
+
*
|
|
550
|
+
* ```gleam
|
|
551
|
+
* assert modulo(1, 0) == Error(Nil)
|
|
552
|
+
* ```
|
|
553
|
+
*
|
|
554
|
+
* ```gleam
|
|
555
|
+
* assert modulo(10, -1) == Ok(0)
|
|
556
|
+
* ```
|
|
557
|
+
*
|
|
558
|
+
* ```gleam
|
|
559
|
+
* assert modulo(13, by: 3) == Ok(1)
|
|
560
|
+
* ```
|
|
561
|
+
*
|
|
562
|
+
* ```gleam
|
|
563
|
+
* assert modulo(-13, by: 3) == Ok(2)
|
|
564
|
+
* ```
|
|
565
|
+
*
|
|
566
|
+
* ```gleam
|
|
567
|
+
* assert modulo(13, by: -3) == Ok(-2)
|
|
568
|
+
* ```
|
|
569
|
+
*/
|
|
570
|
+
export function modulo(dividend, divisor) {
|
|
571
|
+
if (divisor === 0) {
|
|
572
|
+
return new Error(undefined);
|
|
573
|
+
} else {
|
|
574
|
+
let remainder$1 = remainderInt(dividend, divisor);
|
|
575
|
+
let $ = remainder$1 * divisor < 0;
|
|
576
|
+
if ($) {
|
|
577
|
+
return new Ok(remainder$1 + divisor);
|
|
578
|
+
} else {
|
|
579
|
+
return new Ok(remainder$1);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Performs a *floored* integer division, which means that the result will
|
|
586
|
+
* always be rounded towards negative infinity.
|
|
587
|
+
*
|
|
588
|
+
* If you want to perform truncated integer division (rounding towards zero),
|
|
589
|
+
* use `int.divide()` or the `/` operator instead.
|
|
590
|
+
*
|
|
591
|
+
* Returns division of the inputs as a `Result`: If the given divisor equals
|
|
592
|
+
* `0`, this function returns an `Error`.
|
|
593
|
+
*
|
|
594
|
+
* ## Examples
|
|
595
|
+
*
|
|
596
|
+
* ```gleam
|
|
597
|
+
* assert floor_divide(1, 0) == Error(Nil)
|
|
598
|
+
* ```
|
|
599
|
+
*
|
|
600
|
+
* ```gleam
|
|
601
|
+
* assert floor_divide(5, 2) == Ok(2)
|
|
602
|
+
* ```
|
|
603
|
+
*
|
|
604
|
+
* ```gleam
|
|
605
|
+
* assert floor_divide(6, -4) == Ok(-2)
|
|
606
|
+
* ```
|
|
607
|
+
*
|
|
608
|
+
* ```gleam
|
|
609
|
+
* assert floor_divide(-99, 2) == Ok(-50)
|
|
610
|
+
* ```
|
|
611
|
+
*/
|
|
612
|
+
export function floor_divide(dividend, divisor) {
|
|
613
|
+
if (divisor === 0) {
|
|
614
|
+
return new Error(undefined);
|
|
615
|
+
} else {
|
|
616
|
+
let divisor$1 = divisor;
|
|
617
|
+
let $ = (dividend * divisor$1 < 0) && ((remainderInt(dividend, divisor$1)) !== 0);
|
|
618
|
+
if ($) {
|
|
619
|
+
return new Ok((divideInt(dividend, divisor$1)) - 1);
|
|
620
|
+
} else {
|
|
621
|
+
return new Ok(divideInt(dividend, divisor$1));
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Adds two integers together.
|
|
628
|
+
*
|
|
629
|
+
* It's the function equivalent of the `+` operator.
|
|
630
|
+
* This function is useful in higher order functions or pipes.
|
|
631
|
+
*
|
|
632
|
+
* ## Examples
|
|
633
|
+
*
|
|
634
|
+
* ```gleam
|
|
635
|
+
* assert add(1, 2) == 3
|
|
636
|
+
* ```
|
|
637
|
+
*
|
|
638
|
+
* ```gleam
|
|
639
|
+
* import gleam/list
|
|
640
|
+
* assert list.fold([1, 2, 3], 0, add) == 6
|
|
641
|
+
* ```
|
|
642
|
+
*
|
|
643
|
+
* ```gleam
|
|
644
|
+
* assert 3 |> add(2) == 5
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
export function add(a, b) {
|
|
648
|
+
return a + b;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Multiplies two integers together.
|
|
653
|
+
*
|
|
654
|
+
* It's the function equivalent of the `*` operator.
|
|
655
|
+
* This function is useful in higher order functions or pipes.
|
|
656
|
+
*
|
|
657
|
+
* ## Examples
|
|
658
|
+
*
|
|
659
|
+
* ```gleam
|
|
660
|
+
* assert multiply(2, 4) == 8
|
|
661
|
+
* ```
|
|
662
|
+
*
|
|
663
|
+
* ```gleam
|
|
664
|
+
* import gleam/list
|
|
665
|
+
*
|
|
666
|
+
* assert list.fold([2, 3, 4], 1, multiply) == 24
|
|
667
|
+
* ```
|
|
668
|
+
*
|
|
669
|
+
* ```gleam
|
|
670
|
+
* assert 3 |> multiply(2) == 6
|
|
671
|
+
* ```
|
|
672
|
+
*/
|
|
673
|
+
export function multiply(a, b) {
|
|
674
|
+
return a * b;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* Subtracts one int from another.
|
|
679
|
+
*
|
|
680
|
+
* It's the function equivalent of the `-` operator.
|
|
681
|
+
* This function is useful in higher order functions or pipes.
|
|
682
|
+
*
|
|
683
|
+
* ## Examples
|
|
684
|
+
*
|
|
685
|
+
* ```gleam
|
|
686
|
+
* assert subtract(3, 1) == 2
|
|
687
|
+
* ```
|
|
688
|
+
*
|
|
689
|
+
* ```gleam
|
|
690
|
+
* import gleam/list
|
|
691
|
+
*
|
|
692
|
+
* assert list.fold([1, 2, 3], 10, subtract) == 4
|
|
693
|
+
* ```
|
|
694
|
+
*
|
|
695
|
+
* ```gleam
|
|
696
|
+
* assert 3 |> subtract(2) == 1
|
|
697
|
+
* ```
|
|
698
|
+
*
|
|
699
|
+
* ```gleam
|
|
700
|
+
* assert 3 |> subtract(2, _) == -1
|
|
701
|
+
* ```
|
|
702
|
+
*/
|
|
703
|
+
export function subtract(a, b) {
|
|
704
|
+
return a - b;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
function range_loop(
|
|
708
|
+
loop$current,
|
|
709
|
+
loop$stop,
|
|
710
|
+
loop$increment,
|
|
711
|
+
loop$acc,
|
|
712
|
+
loop$reducer
|
|
713
|
+
) {
|
|
714
|
+
while (true) {
|
|
715
|
+
let current = loop$current;
|
|
716
|
+
let stop = loop$stop;
|
|
717
|
+
let increment = loop$increment;
|
|
718
|
+
let acc = loop$acc;
|
|
719
|
+
let reducer = loop$reducer;
|
|
720
|
+
let $ = current === stop;
|
|
721
|
+
if ($) {
|
|
722
|
+
return acc;
|
|
723
|
+
} else {
|
|
724
|
+
let acc$1 = reducer(acc, current);
|
|
725
|
+
let current$1 = current + increment;
|
|
726
|
+
loop$current = current$1;
|
|
727
|
+
loop$stop = stop;
|
|
728
|
+
loop$increment = increment;
|
|
729
|
+
loop$acc = acc$1;
|
|
730
|
+
loop$reducer = reducer;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* Run a function for each int between ints `from` and `to`.
|
|
737
|
+
*
|
|
738
|
+
* `from` is inclusive, and `to` is exclusive.
|
|
739
|
+
*
|
|
740
|
+
* ## Examples
|
|
741
|
+
*
|
|
742
|
+
* ```gleam
|
|
743
|
+
* assert
|
|
744
|
+
* range(from: 0, to: 3, with: "", run: fn(acc, i) {
|
|
745
|
+
* acc <> to_string(i)
|
|
746
|
+
* })
|
|
747
|
+
* == "012"
|
|
748
|
+
* ```
|
|
749
|
+
*
|
|
750
|
+
* ```gleam
|
|
751
|
+
* assert range(from: 1, to: -2, with: [], run: list.prepend) == [-1, 0, 1]
|
|
752
|
+
* ```
|
|
753
|
+
*/
|
|
754
|
+
export function range(start, stop, acc, reducer) {
|
|
755
|
+
let _block;
|
|
756
|
+
let $ = start < stop;
|
|
757
|
+
if ($) {
|
|
758
|
+
_block = 1;
|
|
759
|
+
} else {
|
|
760
|
+
_block = -1;
|
|
761
|
+
}
|
|
762
|
+
let increment = _block;
|
|
763
|
+
return range_loop(start, stop, increment, acc, reducer);
|
|
764
|
+
}
|