geam-stdlib 0.2.1

Official Gleam standard-library providers for Geam
Documentation
import gleam/int
import gleam/order

pub fn main() {
  let very_large = 1234567890123456789012345678901234567890
  assert int.absolute_value(-12) == 12
  assert int.power(2, of: -1.0) == Ok(0.5)
  assert int.power(-1, of: 0.5) == Error(Nil)
  assert int.square_root(4) == Ok(2.0)
  assert int.square_root(-16) == Error(Nil)
  assert int.parse("+12") == Ok(12)
  assert int.parse("ABC") == Error(Nil)
  assert int.parse("1234567890123456789012345678901234567890") == Ok(very_large)
  assert int.base_parse("-FF", 16) == Ok(-255)
  assert int.base_parse("2", 2) == Error(Nil)
  assert int.base_parse("10", 1) == Error(Nil)
  assert int.to_string(very_large) == "1234567890123456789012345678901234567890"
  assert int.to_base_string(255, 16) == Ok("FF")
  assert int.to_base_string(1, 37) == Error(Nil)
  assert int.to_base2(10) == "1010"
  assert int.to_base8(15) == "17"
  assert int.to_base16(255) == "FF"
  assert int.to_base36(48) == "1C"
  assert int.to_float(-3) == -3.0
  assert int.clamp(40, min: 50, max: 60) == 50
  assert int.clamp(40, min: 50, max: 30) == 40
  assert int.compare(2, with: 3) == order.Lt
  assert int.min(2, 3) == 2
  assert int.max(2, 3) == 3
  assert int.is_even(2)
  assert int.is_odd(3)
  assert int.negate(1) == -1
  assert int.sum([1, 2, 3]) == 6
  assert int.product([2, 3, 4]) == 24
  assert int.divide(-99, by: 2) == Ok(-49)
  assert int.divide(1, by: 0) == Error(Nil)
  assert int.remainder(-13, by: 3) == Ok(-1)
  assert int.modulo(-13, by: 3) == Ok(2)
  assert int.floor_divide(-99, by: 2) == Ok(-50)
  assert int.add(1, 2) == 3
  assert int.multiply(2, 4) == 8
  assert int.subtract(3, 1) == 2
  assert int.bitwise_and(5, 3) == 1
  assert int.bitwise_not(5) == -6
  assert int.bitwise_or(5, 2) == 7
  assert int.bitwise_exclusive_or(5, 3) == 6
  assert int.bitwise_shift_left(1, 5) == 32
  assert int.bitwise_shift_left(8, -1) == 4
  assert int.bitwise_shift_right(32, 2) == 8
  assert int.bitwise_shift_right(8, -1) == 16
  assert int.range(from: 0, to: 4, with: 0, run: fn(acc, value) {
    acc + value
  }) == 6
  assert int.range(from: 3, to: 0, with: 0, run: fn(acc, value) {
    acc + value
  }) == 6
  let random = int.random(1000)
  assert random >= 0 && random < 1000
  random
}
// @geam:expect 976