Working ProgramsFiles and Paths
Blorp by Example

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