[R6RS] decision checks

dyb at cs.indiana.edu dyb at cs.indiana.edu
Mon Aug 28 13:42:24 EDT 2006

I have been keeping a list of decisions we've made since the last status
report.  The list is below, minus some things I am sure have been
addressed.  Most of these decisions are probably already reflected in the
current draft, and I'm sure there are other decisions missing that aren't,
but it may be a useful checklist as you make final changes to your
sections of the document.



- implementations "should" raise &syntax if x in (quote x) is not a datum
- if x in (quote x) is not a datum, "should" raise &syntax
  - presumably, this goes for second argument of datum->syntax as well
- exception must be raised if procedure passed a number of arguments
  it doesn't expect as determined by the formals of the lambda
  expression from which the procedure was created
- the second (alternative) expansion of begin from R6RS 7.3 shall be
  shall be revised for consistency with the rest of the R6RS, but some
  such alternative expansion of begin shall remain in the corresponding
  section of R6RS.
- leave single-value context behavior unspecified
- add quasisyntax, unsyntax, unsyntax-splicing
- treat let-syntax/letrec-syntax as begin rather than let
- case no longer requires distinct keys
- contract-defect has been renamed contract-violation
- violation has been flushed
- continuation of the last form in the library body is unspecified
- library exports are immutable only *after* initializing assignment
- script syntax:
  <script header><optional #!r6rs><import form><interleaved library body>
  <script header> -> #!/usr/bin/env scheme-script <line terminator>
  <import form> -> (import <import-spec>*)
  <interleaved library body> -> library body with interleaved definitions
     and commands
- library phasing: phased and unphased models both explicitly allowed
- disallow multiple definitions of the same variable within a library
  body, lambda body, or script body
- export clause comes before import clause
- added open-bytes-output-port, get-output-bytes, open-string-output-port,
- add transcoder argument to get/put routines
- read-char implicitly uses port transcoder; get-* does not
- add accessors and pin-down eqv? semantics for transcoders and
  component parts
- transcoder is three-argument proedure (last two optional): codec, eol,
- read-char may return EOF then something else if underlying object
  was extended in the meantime
- if lookahead-whatever returns EOF, and next operation on the port
  is call to lookahead-whatever or get-whatever, the second call must
  also return EOF
- if lookahead-whatever raises and exception due to insufficient bytes
  available to complete the char, and next operation on the port
  is call to lookahead-whatever or get-whatever, the second call need
  not also raise an exception if the underlying object was extended
  in the meantime
- get-line recognizes the Unicode line separator

More information about the R6RS mailing list