geam-stdlib 0.2.1

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

pub fn main() {
  let ok: Result(Int, String) = Ok(1)
  let error: Result(Int, String) = Error("first")

  assert result.try(ok, fn(value) { Ok(value + 1) }) == Ok(2)
  assert result.try(ok, fn(_) { Error("next") }) == Error("next")
  assert result.try(error, fn(_) { panic as "unselected try callback" }) == error

  assert result.all([Ok(1), Ok(2), Ok(3)]) == Ok([1, 2, 3])
  assert result.all([Ok(1), Error("first"), Error("second")])
    == Error("first")
  assert result.partition([Ok(1), Error("a"), Error("b"), Ok(2)])
    == #([2, 1], ["b", "a"])
  assert result.values([Ok(1), Error("ignored"), Ok(3)]) == [1, 3]

  assert result.try_recover(ok, with: fn(_) {
    panic as "unselected recovery callback"
  }) == ok
  assert result.try_recover(error, with: fn(value) {
    assert value == "first"
    Ok(2)
  }) == Ok(2)
  assert result.try_recover(error, with: fn(_) { Error("failed") })
    == Error("failed")

  Nil
}
// @geam:expect Nil