call_with_stream(s, fn)

Call the function fn with the input or output stream s as its only argument. If fn returns normally, close s and return the value of fn. If fn throws an error, close s and re-throw the error.

The stream represented by s is not automatically closed if a continuation created outside of fn is invoked, since it is possible that another continuation created inside of fn will be invoked at a later time, returning control to fn and expecting that s is still open.


// write a file:
call_with_stream(file_writer("abc"), ^(s) println(stream = s, "hello, world"))
// read it back:
call_with_stream(file_reader("abc"), ^(s) read_line(s))
// hello world

Core Module Index | Contents