fn parse_score(value: Number) -> Result[Number, Text]:
    if value >= 0:
        return ok(value)
    return err("score must be non-negative")

fn score_or_zero(result: Result[Number, Text]) -> Number:
    if result_is_ok(result):
        return result_unwrap(result)
    return 0

start:
    let valid: Result[Number, Text] = parse_score(12)
    let invalid: Result[Number, Text] = parse_score(-1)
    assert result_is_ok(valid)
    assert not result_is_ok(invalid)
    assert score_or_zero(valid) == 12
    assert score_or_zero(invalid) == 0
    assert result_unwrap_error(invalid) == "score must be non-negative"
