[r6rs-discuss] criteria for including or excluding a library
William D Clinger
will at ccs.neu.edu
Fri Nov 3 09:17:37 EST 2006
I am posting this as an individual member of the Scheme
community. I am not speaking for the R6RS editors.
Mike Sperber quoting me:
> > Could be a SRFI?
> > If the library could be implemented portably, with
> > reasonable efficiency, using only the rest of R6RS,
> > then it could be described by a SRFI and provided by
> > a portable reference implementation instead of being
> > included within the R6RS.
> I suggest that the heading here is misleading. (As Sam TH already
> pointed out.)
I walked across the hall and thanked Sam for his correction.
Although the guts of syntax-case can be implemented portably,
its connections to libraries and to the evaluator cannot.
> The SRFI process in no way mandates portable reference
> implementations, and a number of SRFIs don't.
True. I was stating my own personal criteria for including
or excluding a library from the R6RS. In my own personal
opinion, the fact that a library could be described by a
SRFI whose reference implementation is not portable should
not count as an argument against including the library
within the R6RS.
I do not accuse you of sharing my opinion.
> > (r6rs i/o primitive), section 15.2 of the draft R6RS:
> > Could be a SRFI? yes
> That should be: yes, but requires compiler support
> for efficiency
> It could be implemented in terms of ports, but that would be putting
> the intention of the I/O design on its head, and would incur
> significant loss of efficiency.
I do not see how a compiler could provide meaningful
special support for that library. I do not understand
the intention of an I/O design that includes section 15.2.
So far as I can see, the largest loss of efficiency that
would result from implementing (r6rs i/o primitive) in
terms of records and ports would be a factor of 2,
incurred only when reading bytes from a file reader.
Whether a factor of 2 is significant for that library is
a subjective judgment. I usually favor simplicity over
efficiency, and I think a portable implementation in terms
of records and ports would be fast enough for all known
applications of (r6rs i/o primitive).
More information about the r6rs-discuss