[racket] rexp-match and optional output port
On Apr 11, 2013, at 11:06 AM, Steve Byan <stevebyan at verizon.net> wrote:
>
> On Apr 11, 2013, at 10:34 AM, Robby Findler <robby at eecs.northwestern.edu> wrote:
>
>> You need to close the port I believe.
>
> Thanks, I assumed the close wasn't needed except to release the file descriptor; I didn't realize it is also needed to flush the output buffer. I just read section 12.1 "Ports" which says close is necessary "to release low-level resources associated with the port." I should have also read section 12.1.3 "Port Buffers and Positions" in the reference. Perhaps section 12.1 would be improved by adding a mention of buffer flushing to the description of close?
>
> My previous experience with output ports used "call-with-output-file" which implicitly closes the port, so I have at least some excuse for my ignorance :-)
Since your program is using the port in a way that isn't delimited syntactically for a dynamic extent, your program is responsible for closing the ports (or flushing them somehow). -- Matthias