Result
Result carries recoverable failure with Ok(value) or Err(error).
Ok
Ok(value) carries the successful result.
result: Result[Int, String] = Ok(42)
Err
Err(error) carries the error value.
result: Result[Int, String] = Err("missing score")
Predictable Failure
A function returning Result[T, E] advertises that callers must handle failure.
pure func parse_score(raw: String) -> Result[Int, String]:
raw
.parse_int()
.to_result("bad score")
Handling Results
match makes success and failure paths explicit at the use site.
match parse_score("82"):
Ok(score): print(score)
Err(msg): print(msg)
Example
This version uses explicit match expressions so both success and failure paths stay visible.
parse-sum.brp
pure func parse_named_int(name: String, raw: String) -> Result[Int, String]:
raw
.parse_int()
.to_result("invalid " + name)
pure func sum_two(left_raw: String, right_raw: String) -> Result[Int, String]:
match parse_named_int("left", left_raw):
Ok(left):
match parse_named_int("right", right_raw):
Ok(right):
Ok(left + right)
Err(msg):
Err(msg)
Err(msg):
Err(msg)
func main(args: List[String]) -> Void:
match sum_two("20", "22"):
Ok(total): print(total) -- prints: 42
Err(msg): print(msg)
Try it
terminal
blorp run parse-sum.brp