5 R6RS Conformance
PLT Scheme’s R6RS support does not conform with the standard in several known ways:
When guard catches an exception that no clause matches, the exception is re-raiseed without restoring the continuation to the one that raised the exception.
This difference can be made visible using dynamic-wind. According to R6RS, the following program should print “in” and “out” twice, but each prints once using PLT Scheme:
Along similar lines, continuation capture and invocation within an exception handler is restricted. Unless the exception is raised through raise-continuable, a handler can escape only through a continuation that is a tail of the current continuation, and a continuation captured within the handler cannot be invoked after control escapes from the raise.
Currently, inexact numbers are printed without a precision indicator, and precision indicators are ignored on input (e.g., 0.5|7 is read the same as 0.5).
Word boundaries for string-downcase, string-upcase, and string-titlecase are not determined as specified by Unicode Standard Annex #29.
When an identifier bound by letrec or letrec* is referenced before it is bound, an exception is not raised; instead, the reference produces #<undefined>.
The bindings in a namespace produced by null-environment or scheme-report-environment correspond to R5RS bindings instead of R6RS bindings. In particular, =>, else, _, and ... are not bound.