Early preview: syntax, standard library APIs, and tooling may change.

Core DataResult

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