update r6rs docs with conformance information
svn: r9564
This commit is contained in:
parent
4e6639fb2f
commit
587a5a506d
|
@ -3,11 +3,17 @@
|
||||||
scribble/bnf
|
scribble/bnf
|
||||||
(for-label setup/dirs
|
(for-label setup/dirs
|
||||||
rnrs/programs-6
|
rnrs/programs-6
|
||||||
|
rnrs/base-6
|
||||||
|
rnrs/unicode-6
|
||||||
|
rnrs/exceptions-6
|
||||||
|
rnrs/io/simple-6
|
||||||
|
rnrs/r5rs-6
|
||||||
(only-in scheme/base lib)))
|
(only-in scheme/base lib)))
|
||||||
|
|
||||||
@(define guide-src '(lib "scribblings/guide/guide.scrbl"))
|
@(define guide-src '(lib "scribblings/guide/guide.scrbl"))
|
||||||
|
|
||||||
@(define r6rs @elem{R@superscript{6}RS})
|
@(define r6rs @elem{R@superscript{6}RS})
|
||||||
|
@(define r5rs @elem{R@superscript{5}RS})
|
||||||
|
|
||||||
@title{@bold{R6RS}: Standard Language}
|
@title{@bold{R6RS}: Standard Language}
|
||||||
|
|
||||||
|
@ -200,6 +206,62 @@ as ports in @schememodname[scheme/base] programs, but only textual
|
||||||
ports created via @|r6rs| libraries can be used by other @|r6rs|
|
ports created via @|r6rs| libraries can be used by other @|r6rs|
|
||||||
operations that expect textual ports.
|
operations that expect textual ports.
|
||||||
|
|
||||||
|
@; ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@section[#:tag "conformance"]{@|r6rs| Conformance}
|
||||||
|
|
||||||
|
PLT Scheme's @|r6rs| support does not conform with the standard in
|
||||||
|
several known ways:
|
||||||
|
|
||||||
|
@itemize[
|
||||||
|
|
||||||
|
@item{When @scheme[guard] catches an exception that no clause
|
||||||
|
matches, the exception is re-@scheme[raise]ed without restoring
|
||||||
|
the continuation to the one that raised the exception.
|
||||||
|
|
||||||
|
This difference can be made visible using
|
||||||
|
@scheme[dynamic-wind]. According to @|r6rs|, the following
|
||||||
|
program should print ``in'' and ``out'' twice, but each prints
|
||||||
|
once using PLT Scheme:
|
||||||
|
|
||||||
|
@schemeblock[
|
||||||
|
(guard (exn [(equal? exn 5) 'five])
|
||||||
|
(guard (exn [(equal? exn 6) 'six])
|
||||||
|
(dynamic-wind
|
||||||
|
(lambda () (display "in") (newline))
|
||||||
|
(lambda () (raise 5))
|
||||||
|
(lambda () (display "out") (newline)))))
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
Along similar lines, continuation capture and invocation within
|
||||||
|
an exception handler is restricted. Unless the exception is
|
||||||
|
raised through @scheme[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.}
|
||||||
|
|
||||||
|
@item{Currently, inexact numbers are printed without a precision
|
||||||
|
indicator, and precision indicators are ignored on input (e.g.,
|
||||||
|
@schemevalfont{0.5|7} is read the same as @scheme[0.5]).}
|
||||||
|
|
||||||
|
|
||||||
|
@item{Word boundaries for @scheme[string-downcase],
|
||||||
|
@scheme[string-upcase], and @scheme[string-titlecase] are not
|
||||||
|
determined as specified by Unicode Standard Annex #29.}
|
||||||
|
|
||||||
|
@item{When an identifier bound by @scheme[letrec] or @scheme[letrec*]
|
||||||
|
is referenced before it is bound, an exception is not raised;
|
||||||
|
instead, th ereference produces @|undefined-const|.}
|
||||||
|
|
||||||
|
@item{The bindings in a namespace produced by @scheme[null-environment]
|
||||||
|
or @scheme[scheme-report-environment] correspond to @|r5rs| bindings
|
||||||
|
instead of @|r6rs| bindings. In particular, @scheme[=>], @scheme[else],
|
||||||
|
@scheme[_], and @scheme[...] are not bound.}
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@; ----------------------------------------------------------------------
|
@; ----------------------------------------------------------------------
|
||||||
|
|
||||||
@section{@|r6rs| Libraries}
|
@section{@|r6rs| Libraries}
|
||||||
|
@ -237,7 +299,7 @@ operations that expect textual ports.
|
||||||
(< #f "r6rs-Z-H-14.html" "node_idx_466")
|
(< #f "r6rs-Z-H-14.html" "node_idx_466")
|
||||||
(<= #f "r6rs-Z-H-14.html" "node_idx_470")
|
(<= #f "r6rs-Z-H-14.html" "node_idx_470")
|
||||||
(= #f "r6rs-Z-H-14.html" "node_idx_464")
|
(= #f "r6rs-Z-H-14.html" "node_idx_464")
|
||||||
(=> #f "r6rs-Z-H-14.html" "node_idx_378")
|
(=> #t "r6rs-Z-H-14.html" "node_idx_378")
|
||||||
(> #f "r6rs-Z-H-14.html" "node_idx_468")
|
(> #f "r6rs-Z-H-14.html" "node_idx_468")
|
||||||
(>= #f "r6rs-Z-H-14.html" "node_idx_472")
|
(>= #f "r6rs-Z-H-14.html" "node_idx_472")
|
||||||
(abs #f "r6rs-Z-H-14.html" "node_idx_506")
|
(abs #f "r6rs-Z-H-14.html" "node_idx_506")
|
||||||
|
@ -582,6 +644,8 @@ operations that expect textual ports.
|
||||||
(else #t "r6rs-lib-Z-H-8.html" "node_idx_374")
|
(else #t "r6rs-lib-Z-H-8.html" "node_idx_374")
|
||||||
(=> #t "r6rs-lib-Z-H-8.html" "node_idx_372")]
|
(=> #t "r6rs-lib-Z-H-8.html" "node_idx_372")]
|
||||||
|
|
||||||
|
See also @secref["conformance"].
|
||||||
|
|
||||||
@r6rs-module[rnrs/conditions-6 (rnrs conditions (6))
|
@r6rs-module[rnrs/conditions-6 (rnrs conditions (6))
|
||||||
"r6rs-lib-Z-H-8.html" "node_idx_382" "Exceptions and Conditions"
|
"r6rs-lib-Z-H-8.html" "node_idx_382" "Exceptions and Conditions"
|
||||||
(who-condition? #f "r6rs-lib-Z-H-8.html" "node_idx_456")
|
(who-condition? #f "r6rs-lib-Z-H-8.html" "node_idx_456")
|
||||||
|
@ -992,6 +1056,8 @@ A hashtable is a dictionary in the sense of @schememodname[scheme/dict].
|
||||||
(exact->inexact #f "r6rs-lib-Z-H-20.html" "node_idx_1286")
|
(exact->inexact #f "r6rs-lib-Z-H-20.html" "node_idx_1286")
|
||||||
(delay #t "r6rs-lib-Z-H-20.html" "node_idx_1296")]
|
(delay #t "r6rs-lib-Z-H-20.html" "node_idx_1296")]
|
||||||
|
|
||||||
|
See also @secref["conformance"].
|
||||||
|
|
||||||
@; ----------------------------------------
|
@; ----------------------------------------
|
||||||
|
|
||||||
@index-section[]
|
@index-section[]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user