Hi,
What would you say about introducing an eof-object property to the ports, that is #!eof by default?
Now the ordinary EOF handling remains: in ~12 places over Gambit's sourcecode, there's an #!eof return value hardcoded. ~2 of these are in C, though channeled through Scheme code of course.
Adding an eof-object should mean an addition of ~~6 lines of code to Gambit, and modification of ~~12 lines.
The reason I propose the eof-object property is basically that, if it's set to #f, IO primitive results can be applied to boolean operators (or and if cond etc.) directly to get a differentiated behavior between success and failure, and this really supports code conciseness.
I'm willing to implement this.
Just wanted to ask if you have any thoughts/comments on it?
(
For context, in the longer run, with the IO system, I find
* finding a way to increase single-byte/char read/write:s from the present 350KB/sec to something much higher, and
* a way to implement application-level ports (SSL/GZIP/etc.)
really relevant developments, and those are also the only ones I have on my mind.
Zooming out further, the reason I care about this is because it's struck me that Gambit's IO system needs to be the facility used for pretty much any IO or IO stream operations; any approaches with the user implementing an own streams, 'io primitives' or similar facility will end up severely limited in comparison with channeling the same functionality through Gambit's IO system, so therefore the clean solution is to make Gambit's IO system support these things well too.
)
Best regards,
Mikael