```rust type argtuple (symbol ident)* // a body is one or more expressions // type body {expr}+ // syntax (inputs) (outputs) syntax bind (name symbol, binder symbol, args argtuple, rest body) { binder(flatten(args, fn(name) body)) } syntax try (e expr, rest body) { if e.iserr() e else body } fn open(p path, body invokable(File, ?)) [? | os.Err!] { bind f File(os.open(p), 0) bind out body(f) try os.close(f.fd) out } fn main (ctx Ctx) int { bind f open ./test.txt } ```