Files and Paths
File APIs return Result so I/O failure stays visible.
Read_file
system.read_file returns Result[String, String].
read-file.brp
match read_file("notes.txt"):
Ok(text): print(text)
Err(msg): eprintln(msg)Write_file
system.write_file returns Result[Void, String].
write-file.brp
_ = write_file("notes.txt", "hello")Path.join
path.join combines path segments without hand-written separators.
path.brp
file: String = Path.join("data", "scores.txt")Result Handling
match or ?= handles errors before the program continues.
result-handle.brp
match result:
Ok(_): print("saved")
Err(msg): eprintln(msg)Example
todo-add.brp
import:
path as Path
system: read_file, write_file
func add_todo(dir: String, item: String) -> Result[String, String]:
file: String = Path.join(dir, "todo.txt")
current: String = match read_file(file):
Ok(text): text
Err(_): ""
match write_file(file, current + item + "\n"):
Ok(_): Ok("saved")
Err(msg): Err(msg)
func main(args: List[String]) -> Void:
match add_todo(".", "write docs"):
Ok(message): print(message)
Err(msg): print(msg)
Try It
terminal
blorp run todo-add.brp