[R6RS] please consider the condition hierarchy

William D Clinger will at ccs.neu.edu
Tue Apr 25 14:30:21 EDT 2006


I am posting this annoying message to provoke you into taking
a look at Subversion/draft/safety/classification.txt, which
proposes a tentative condition hierarchy and classification
of exceptional situations for the R6RS.

To be annoyingly provocative, I will remark on what that
tentative proposal currently says about some situations on
which we will be voting shortly.  Just to be annoying, I
will also make some remarks that have nothing to do with
the condition hierarchy and classification of exceptional
situations.  Determining which remarks are legitimately
provocative and which are uselessly annoying is left as
an exercise for the reader.

1.  unspecified value, three options:
    A. leave as in r5rs: set!, set-car!, etc., return unspecified value
    B. require return of new void value
    C. require return of zero values

The tentative proposal says that returning zero values to
a continuation that was not created by call-with-values
may raise a &violation exception.

5.  add (define x) syntax

The tentative proposal says this illegal syntax must raise
a &syntax exception.

11. relegate one-armed if to r5rs-compatibility library

Presumably implementations would be required to raise a
&syntax exception for one-armed if unless it were imported
from some library.

14. add #n( vector prefix:

    Examples: #5(0 1 2 3 4) equiv. #(0 1 2 3 4)
              #8(0 1 2 3 4) equiv. #(0 1 2 3 4 5 6 7)
              #1000(#f) equiv. #(#f #f ... #f)  [ 1000 #f's ]

The tentative proposal says the read procedure must raise
a &lexical exception if it sees this or some other illegal
external representation.

21. specify that append does not copy first argument when second is '()

The tentative proposal says append must raise a &list exception
if any of its arguments, except for the last, is not a proper
list.  That means append would still have to traverse its first
argument when its second argument is the empty list, even if
this vote were to pass.  It also means that append must use
something like the tortoise and hare algorithm, which might
make it somewhat slower than an R5RS-conforming append.

24. add #!eof as external representation for eof-object

That would defeat the purpose of having an eof-object that cannot
be the value of any external representation.

27. add homogeneous numeric vectors

The tentative proposal would require implementations to raise
a &lexical exception when they encounter an illegal external
representation, such as the ones that have been proposed for
homogeneous numeric vectors.

28. make () self-evaluating

The tentative proposal would require implementations to raise
a &syntax exception if they see an unquoted () in an expression
context.

30. #t and #f must be followed by a delimiter
31. characters must be followed by a delimiter

The tentative proposal would require implementations to raise
a &lexical or &syntax exception if either of these votes were
to pass and the external representation in question is not
followed by a delimiter.

Will




More information about the R6RS mailing list