R6RS:CompatibilityNotes

This space is for memorandum about the parts in R6RS which are incompatible to R5RS or existing SRFIs. Intended to be a check list for implementors who wish to support compatibility mode, or a programmers who wish to write code that may work in R6RS and R5RS+SRFIs for the least effort.

Lexical syntax

Base library

  • string-for-each - conflicts to SRFI-13 when more than one string is given (srfi-13 takes optional start and end arguments). Though an implementation may support both, switching by looking at the type of the optional arguments.
  • error - conflicts to SRFI-23 by requiring the who argument as the first argument. An implementation cannot support both error procedures simultaneously, since if the first and second arguments are both strings it cannot distinguish whether it is R6RS-call (error who message) or SRFI-23-call (error message obj).

Standard library

  • condition - conflicts to SRFI-35: R6RS defines this as a procedure, while SRFI-35 defines this as a macro that takes arguments in the following form:
      (condition (<condition-type1> (<field1> <exp1>) ...)
                 (<condition-type2> (<field2> <exp2>) ...) ...)
    
    The two versions can't be distinguished from the source. Too bad.