Re: [Scheme-reports] valid implementation of call-with-input-file?
Andy Wingo 23 Aug 2012 10:23 UTC
On Thu 23 Aug 2012 09:28, Alex Shinn <alexshinn@gmail.com> writes:
>> It doesn't matter though, the answer
>> here is still no: R6RS programs use different libraries. c-w-i-f in
>> R6RS does not have the be the same one as in R7RS.
>
> It's not that simple. Dynamic extent can have complex
> interactions where third-party libraries may "sandwich"
> your own code.
>
> Consider the following parser combinator example:
>
> (let ((parser (parser-or parser1 parser2)))
> (with-parsers
> (call-with-input-file file
> (lambda (in)
> (let ((stream (make-parser-stream in)))
> (parser in))))))
>
> If call-with-input-file closes the port on exceptions,
> this code breaks.
There is no portable "exception" interface in the Schemes that R7RS
targets, beyond bare call/cc and a mutable cell.
I must admit I am skeptical of an endeavor that aims to add a new
exception system to Scheme, one that is not present natively in the
majority of implementations, while also aiming to keep compatibility
with non-portable code.
Not to mention the crazy interactions of `raise' and dynamic-wind... but
that is another rant I shouldn't get into. Good luck with R7RS
exceptions!
Regards,
Andy
--
http://wingolog.org/
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports