From cbf1d0752ced90216b11d789da4cda05d86a2e7a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 26 Jul 2007 18:57:19 +0000 Subject: [PATCH] fix many cross-references svn: r6971 --- collects/scribblings/reference/bytes.scrbl | 50 ++++++------- collects/scribblings/reference/chars.scrbl | 5 +- .../reference/code-inspectors.scrbl | 8 +- .../scribblings/reference/encodings.scrbl | 75 +++++++++++++++++++ collects/scribblings/reference/eval.scrbl | 8 +- collects/scribblings/reference/memory.scrbl | 4 +- .../reference/module-reflect.scrbl | 10 +-- .../scribblings/reference/namespaces.scrbl | 13 ++-- collects/scribblings/reference/ports.scrbl | 31 +------- collects/scribblings/reference/read.scrbl | 5 +- collects/scribblings/reference/reader.scrbl | 2 +- collects/scribblings/reference/strings.scrbl | 24 +++--- .../reference/struct-inspectors.scrbl | 13 ++++ .../scribblings/reference/stx-certs.scrbl | 2 +- collects/scribblings/reference/stx-ops.scrbl | 26 ++++--- .../scribblings/reference/stx-props.scrbl | 8 +- .../scribblings/reference/stx-trans.scrbl | 34 ++++----- .../scribblings/reference/syntax-model.scrbl | 66 ++++++++++++---- collects/scribblings/reference/syntax.scrbl | 19 ++++- 19 files changed, 262 insertions(+), 141 deletions(-) create mode 100644 collects/scribblings/reference/encodings.scrbl diff --git a/collects/scribblings/reference/bytes.scrbl b/collects/scribblings/reference/bytes.scrbl index 1149f0c647..7fdb312851 100644 --- a/collects/scribblings/reference/bytes.scrbl +++ b/collects/scribblings/reference/bytes.scrbl @@ -112,17 +112,17 @@ positions are initialized with the given @scheme[b]s. [src-start exact-nonnegative-integer? 0] [src-end exact-nonnegative-integer? (bytes-length src)]) void?]{ - Changes the bytes of @scheme[dest] from positions - @scheme[dest-start] (inclusive) to @scheme[dest-end] (exclusive) to - match the bytes in @scheme[src] from @scheme[src-start] - (inclusive). The bytes strings @scheme[dest] and @scheme[src] can be the - same byte string, and in that case the destination region can overlap with - the source region; the destination bytes after the copy match - the source bytes from before the copy. If any of - @scheme[dest-start], @scheme[src-start], or @scheme[src-end] - are out of range (taking into account the sizes of the bytes strings and - the source and destination regions), the - @exnraise[exn:fail:contract]. + + Changes the bytes of @scheme[dest] starting at position + @scheme[dest-start] to match the bytes in @scheme[src] from + @scheme[src-start] (inclusive) to @scheme[src-end] (exclusive). The + bytes strings @scheme[dest] and @scheme[src] can be the same byte + string, and in that case the destination region can overlap with the + source region; the destination bytes after the copy match the source + bytes from before the copy. If any of @scheme[dest-start], + @scheme[src-start], or @scheme[src-end] are out of range (taking into + account the sizes of the bytes strings and the source and destination + regions), the @exnraise[exn:fail:contract]. @examples[(define s (bytes 65 112 112 108 101)) (bytes-copy! s 4 #"y") @@ -204,14 +204,14 @@ positions are initialized with the given @scheme[b]s. [end exact-nonnegative-integer? (bytes-length bstr)]) string?]{ Produces a string by decoding the @scheme[start] to @scheme[end] - substring of @scheme[bstr] as a UTF-8 encoding of Unicode code points. - If @scheme[err-char] is not @scheme[#f], then it is used - for bytes that fall in the range @scheme[#o200] to @scheme[#o377] but - are not part of a valid encoding sequence. (This is consistent with - reading characters from a port; see @secref["ports"] for more details.) - If @scheme[err-char] is @scheme[#f], and if the - @scheme[start] to @scheme[end] substring of @scheme[bstr] is not a valid - UTF-8 encoding overall, then the @exnraise[exn:fail:contract].} + substring of @scheme[bstr] as a UTF-8 encoding of Unicode code + points. If @scheme[err-char] is not @scheme[#f], then it is used for + bytes that fall in the range @scheme[#o200] to @scheme[#o377] but are + not part of a valid encoding sequence. (This is consistent with + reading characters from a port; see @secref["mz:encodings"] for more + details.) If @scheme[err-char] is @scheme[#f], and if the + @scheme[start] to @scheme[end] substring of @scheme[bstr] is not a + valid UTF-8 encoding overall, then the @exnraise[exn:fail:contract].} @defproc[(bytes->string/locale [bstr bytes?] [err-char (or/c false/c char?) #f] @@ -220,7 +220,7 @@ positions are initialized with the given @scheme[b]s. string?]{ Produces a string by decoding the @scheme[start] to @scheme[end] substring of @scheme[bstr] using the current locale's encoding (see also - @secref["locales"]). If @scheme[err-char] is not + @secref["mz:encodings"]). If @scheme[err-char] is not @scheme[#f], it is used for each byte in @scheme[bstr] that is not part of a valid encoding; if @scheme[err-char] is @scheme[#f], and if the @scheme[start] to @scheme[end] substring of @scheme[bstr] is not a valid @@ -235,7 +235,7 @@ positions are initialized with the given @scheme[b]s. of @scheme[bstr] as a Latin-1 encoding of Unicode code points; i.e., each byte is translated directly to a character using @scheme[integer->char], so the decoding always succeeds. (See also the - Latin-1 footnote of @secref["encodings"].) The @scheme[err-char] + Latin-1 footnote of @secref["mz:encodings"].) The @scheme[err-char] argument is ignored, but present for consistency with the other operations.} @@ -256,7 +256,7 @@ positions are initialized with the given @scheme[b]s. bytes?]{ Produces a string by encoding the @scheme[start] to @scheme[end] substring of @scheme[str] using the current locale's encoding (see also - @secref["locales"]). If @scheme[err-byte] is not @scheme[#f], it is used + @secref["mz:encodings"]). If @scheme[err-byte] is not @scheme[#f], it is used for each character in @scheme[str] that cannot be encoded for the current locale; if @scheme[err-byte] is @scheme[#f], and if the @scheme[start] to @scheme[end] substring of @scheme[str] cannot be encoded, @@ -272,7 +272,7 @@ positions are initialized with the given @scheme[b]s. directly to a byte using @scheme[char->integer]. If @scheme[err-byte] is not @scheme[#f], it is used for each character in @scheme[str] whose value is greater than @scheme[255]. (See also the Latin-1 footnote of - @secref["encodings"]. If @scheme[err-byte] is @scheme[#f], and if the + @secref["mz:encodings"]. If @scheme[err-byte] is @scheme[#f], and if the @scheme[start] to @scheme[end] substring of @scheme[str] has a character with a value greater than @scheme[255], then the @exnraise[exn:fail:contract].} @@ -356,12 +356,12 @@ Certain encoding combinations are always available: characters; see @secref["mz:ports"].)} @item{@scheme[(bytes-open-converter "" "UTF-8")] --- converts from - the current locale's default encoding (see @secref["mz:locales"]) + the current locale's default encoding (see @secref["mz:encodings"]) to UTF-8.} @item{@scheme[(bytes-open-converter "UTF-8" "")] --- converts from UTF-8 to the current locale's default encoding (see - @secref["mz:locales"]).} + @secref["mz:encodings"]).} @item{@scheme[(bytes-open-converter "platform-UTF-8" "platform-UTF-16")] --- converts UTF-8 to UTF-16 under @|AllUnix|, where each UTF-16 diff --git a/collects/scribblings/reference/chars.scrbl b/collects/scribblings/reference/chars.scrbl index 5d3f6279be..c3a6283d19 100644 --- a/collects/scribblings/reference/chars.scrbl +++ b/collects/scribblings/reference/chars.scrbl @@ -8,8 +8,9 @@ @guideintro["guide:characters"]{characters} MzScheme characters range over Unicode scalar values, which includes -characters whose values range from @scheme[#x0] to @scheme[#x10FFFF], -but not including @scheme[#xD800] to @scheme[#xDFFF]. +characters whose values range from @schemevalfont{#x0} to +@schemevalfont{#x10FFFF}, but not including @schemevalfont{#xD800} to +@schemevalfont{#xDFFF}. Two characters are @scheme[eqv?] if they correspond to the same scalar value. For each scalar value less than 256, character values that are diff --git a/collects/scribblings/reference/code-inspectors.scrbl b/collects/scribblings/reference/code-inspectors.scrbl index b8ec4c2af2..51eb52bf2d 100644 --- a/collects/scribblings/reference/code-inspectors.scrbl +++ b/collects/scribblings/reference/code-inspectors.scrbl @@ -5,8 +5,8 @@ In the same way that inspectors control access to structure fields (see @secref["mz:inspectors"]), inspectors also control access to -module bindings (see @secref["mz:modules"]). The default inspector for -module bindings is determined by the @scheme[current-code-inspector] +@tech{module bindings}. The default inspector for @tech{module +bindings} is determined by the @scheme[current-code-inspector] parameter, instead of the @scheme[current-inspector] parameter. When a @scheme[module] declaration is evaluated, the value of the @@ -28,7 +28,7 @@ Control over a module invocation enables identifiers exported from the module with @scheme[protect]; and} @item{access to the module's protected and unexported variables - within compiled code from @scheme[read] (see @secref["mz:compilation"]).} + within compiled code from @scheme[read] (see @scheme[current-compile]).} } @@ -51,7 +51,7 @@ macro expander prevent any reference to an unexported identifier, unless the reference appears within an expression that was generated by the module's macros (or, more precisely, a macro from a module whose declaration inspector controls the invocation of the -identifier's module). See @secref["mz:stxprotect"] for further +identifier's module). See @secref["mz:stxcerts"] for further information. @defparam[current-code-inspector insp inspector?]{ diff --git a/collects/scribblings/reference/encodings.scrbl b/collects/scribblings/reference/encodings.scrbl new file mode 100644 index 0000000000..1705c65948 --- /dev/null +++ b/collects/scribblings/reference/encodings.scrbl @@ -0,0 +1,75 @@ +#reader(lib "docreader.ss" "scribble") +@require["mz.ss"] + +@title[#:tag "mz:encodings"]{Encodings and Locales} + +When a port is provided to a character-based operation, such as +@scheme[read-char] or @scheme[read], the port's bytes are read and +interpreted as a UTF-8 encoding of characters. Thus, reading a single +character may require reading multiple bytes, and a procedure like +@scheme[char-ready?] may need to peek several bytes into the stream to +determine whether a character is available. In the case of a byte +stream that does not correspond to a valid UTF-8 encoding, functions +such as @scheme[read-char] may need to peek one byte ahead in the +stream to discover that the stream is not a valid encoding. + +When an input port produces a sequence of bytes that is not a valid +UTF-8 encoding in a character-reading context, then bytes that +constitute an invalid sequence are converted to the character +@litchar{?}. Specifically, bytes 255 and 254 are always converted to +@litchar{?}, bytes in the range 192 to 253 produce @litchar{?} when +they are not followed by bytes that form a valid UTF-8 encoding, and +bytes in the range 128 to 191 are converted to @litchar{?} when they +are not part of a valid encoding that was started by a preceding byte +in the range 192 to 253. To put it another way, when reading a +sequence of bytes as characters, a minimal set of bytes are changed to +63 (which is the value that @scheme[(char->integer #\?)] produces) so +that the entire sequence of bytes is a valid UTF-8 encoding. + +See @secref["mz:bytestrings"] for procedures that facilitate +conversions using UTF-8 or other encodings. See also +@scheme[reencode-input-port] and @scheme[reencode-output-port] for +obtaining a UTF-8-based port from one that uses a different encoding +of characters. + + +A @deftech{locale} captures information about a user's +culture-specific interpretation of character sequences. In particular, +a locale determines how strings are ``alphabetized,'' how a lowercase +character is converted to an uppercase character, and how strings are +compared without regard to case. String operations such as +@scheme[string-ci?] are @italic{not} sensitive to the current locale, +but operations such as @scheme[string-locale-ci?] (see +@secref["mz:strings"]) produce results consistent with the current +locale. + +A locale also designates a particular encoding of code-point sequences +into byte sequences. Scheme generally ignores this aspect of the +locale, with a few notable exceptions: command-line arguments passed +to Scheme as byte strings are converted to character strings using the +locale's encoding; command-line strings passed as byte strings to +other processes (through @scheme[subprocess]) are converted to byte +strings using the locale's encoding; environment variables are +converted to and from strings using the locale's encoding; filesystem +paths are converted to and from strings (for display purposes) using +the locale's encoding; and, finally, Scheme provides functions such as +@scheme[string->bytes/locale] to specifically invoke a locale-specific +encoding. + +A Unix user selects a locale by setting environment variables, such as +@envvar{LC_ALL}. Under Windows and Mac OS X, the operating system +provides other mechanisms for setting the locale. Within Scheme, the +current locale can be changed by setting the @scheme[current-locale] +parameter. The locale name within Scheme is a string, and the +available locale names depend on the platform and its configuration, +but the @scheme[""] locale means the current user's default locale; +under Windows and Mac OS X, the encoding for @scheme[""] is always +UTF-8, and locale-sensitive operations use the operating system's +native interface. (In particular, setting the @envvar{LC_ALL} and +@envvar{LC_CTYPE} environment variables do not affect the locale +@scheme[""] under Mac OS X. Use @scheme[getenv] and +@scheme[current-locale] to explicitly install the +environment-specified locale, if desired.) Setting the current locale +to @scheme[#f] makes locale-sensitive operations locale-insensitive, +which means using the Unicode mapping for case operations and using +UTF-8 for encoding. diff --git a/collects/scribblings/reference/eval.scrbl b/collects/scribblings/reference/eval.scrbl index ed1fed1f2e..e14ed7ffa1 100644 --- a/collects/scribblings/reference/eval.scrbl +++ b/collects/scribblings/reference/eval.scrbl @@ -96,7 +96,7 @@ If the second argument to the load handler is a symbol, then: @itemize{ @item{The @scheme[read-syntax] from the file is additionally - @tech{parameterize}d as follows (to provide consistent reading + @scheme[parameterize]d as follows (to provide consistent reading of module source): @schemeblock[ @@ -325,8 +325,8 @@ long as the @scheme[read-accept-compiled] parameter is set to @scheme[#t]). When a compiled form contains syntax object constants, the -@litchar{#~}-marshaled form drops location information and properties -(@secref["mz:stxprops"]) for the @tech{syntax objects}. +@litchar{#~}-marshaled form drops source-location information and +properties (@secref["mz:stxprops"]) for the @tech{syntax objects}. Compiled code parsed from @litchar{#~} may contain references to unexported or protected bindings from a module. At read time, such @@ -358,7 +358,7 @@ tail position with @scheme[top-level-form].} @defproc[(compile-syntax [stx syntax?]) compiled-expression?]{ -Like @scheme[eval-syntax], but calls the current @tech{compile +Like @scheme[eval-syntax], but calls the current @tech{compilation handler} in tail position with @scheme[stx].} diff --git a/collects/scribblings/reference/memory.scrbl b/collects/scribblings/reference/memory.scrbl index 5fe5a3aeec..e6f6638dd1 100644 --- a/collects/scribblings/reference/memory.scrbl +++ b/collects/scribblings/reference/memory.scrbl @@ -14,7 +14,7 @@ is only reachable via weak references, the content of the weak box is replaced with @scheme[#f]. A @deftech{weak reference} is a reference through a weak box, through a key reference in a weak hash table (see @secref["mz:hashtables"]), through a value in an ephemeron where the -value can be replaced by @scheme[#f] (see @secref["mz:ephemeron"]), or +value can be replaced by @scheme[#f] (see @secref["mz:ephemerons"]), or through a custodian (see @secref["mz:custodians"]). @defproc[(make-weak-box [v any/c]) weak-box?]{ @@ -34,7 +34,7 @@ collector has proven that the previous content value of Returns @scheme[#t] if @scheme[v] is a weak box, @scheme[#f] otherwise.} @;------------------------------------------------------------------------ -@section[#:tag "mz:ephemeron"]{Ephemerons} +@section[#:tag "mz:ephemerons"]{Ephemerons} An @deftech{ephemeron} is similar to a weak box (see @secref["mz:weakbox"]), except that diff --git a/collects/scribblings/reference/module-reflect.scrbl b/collects/scribblings/reference/module-reflect.scrbl index 3a619e7d3e..482e826a3d 100644 --- a/collects/scribblings/reference/module-reflect.scrbl +++ b/collects/scribblings/reference/module-reflect.scrbl @@ -110,10 +110,10 @@ with a message about a dependency cycle. Module loading is suppressed (i.e., @scheme[#f] is supplied as a third argument to the module name resolver) when resolving module paths in -syntax objects (see @secref["mz:stxobj"]). When a syntax object is -manipulated, the current namespace might not match the original -namespace for the syntax object, and the module should not necessarily -be loaded in the current namespace. +@tech{syntax objects} (see @secref["mz:stxobj-model"]). When a +@tech{syntax object} is manipulated, the current namespace might not +match the original namespace for the syntax object, and the module +should not necessarily be loaded in the current namespace. The current module name resolver is called with a single argument by @scheme[namespace-attach-module] to notify the resolver that a module @@ -237,7 +237,7 @@ path index}. The @scheme[path] argument can @scheme[#f] only if Returns @scheme[#t] if @scheme[v] is a compiled @scheme[module] declaration, @scheme[#f] otherwise. See also -@secref["mz:compilation"].} +@scheme[current-compile].} @defproc[(module-compiled-name [compiled-module-code compiled-module-expression?]) diff --git a/collects/scribblings/reference/namespaces.scrbl b/collects/scribblings/reference/namespaces.scrbl index 5766c8b01e..1bbb4a3875 100644 --- a/collects/scribblings/reference/namespaces.scrbl +++ b/collects/scribblings/reference/namespaces.scrbl @@ -222,11 +222,12 @@ assignments to the binding via @scheme[set!].} @defproc[(namespace-syntax-introduce [stx syntax-object?]) syntax-object?]{ Returns a syntax object like @scheme[stx], except that the current -namespace's bindings are included in the syntax object's context (see -@secref["mz:stxscope"]). The additional context is overridden by any -existing top-level context in the syntax object, or by any existing or -future module context. See @secref["mz:stxobj"] for more information -about syntax objects.} +namespace's bindings are included in the @tech{syntax object}'s +@tech{lexical information} (see @secref["mz:stxobj-model"]). The +additional context is overridden by any existing @tech{top-level +bindings} in the @tech{syntax object}'s @tech{lexical information}, or +by any existing or future @tech{module bindings} in the @tech{lexical +information}.} @defproc[(module-provide-protected? [module-path-index (or/c symbol? module-path-index?)] @@ -245,4 +246,4 @@ indices. Typically, the arguments to @scheme[module-provide-protected?] correspond to the first two elements of a list produced by -@scheme[identifier-binding] (see @secref["mz:stxscope"]).} +@scheme[identifier-binding].} diff --git a/collects/scribblings/reference/ports.scrbl b/collects/scribblings/reference/ports.scrbl index ce9d4d5daa..c13479953a 100644 --- a/collects/scribblings/reference/ports.scrbl +++ b/collects/scribblings/reference/ports.scrbl @@ -4,34 +4,8 @@ @title[#:tag "mz:ports" #:style 'toc]{Ports} @deftech{Ports} produce and consume bytes. When a port is provided to -a character-based operation, such as @scheme[read], the port's bytes -are read and interpreted as a UTF-8 encoding of characters (see also -@secref["mz:encodings"]). Thus, reading a single character may require -reading multiple bytes, and a procedure like @scheme[char-ready?] may -need to peek several bytes into the stream to determine whether a -character is available. In the case of a byte stream that does not -correspond to a valid UTF-8 encoding, functions such as -@scheme[read-char] may need to peek one byte ahead in the stream to -discover that the stream is not a valid encoding. - -When an input port produces a sequence of bytes that is not a valid -UTF-8 encoding in a character-reading context, then bytes that -constitute an invalid sequence are converted to the character -@litchar{?}. Specifically, bytes 255 and 254 are always converted to -@litchar{?}, bytes in the range 192 to 253 produce @litchar{?} when -they are not followed by bytes that form a valid UTF-8 encoding, and -bytes in the range 128 to 191 are converted to @litchar{?} when they -are not part of a valid encoding that was started by a preceding byte -in the range 192 to 253. To put it another way, when reading a -sequence of bytes as characters, a minimal set of bytes are changed to -63 (which is the value that @scheme[(char->integer #\?)] produces) so -that the entire sequence of bytes is a valid UTF-8 encoding. - -See @secref["mz:bytestrings"] for procedures that facilitate -conversions using UTF-8 or other encodings. See also -@scheme[reencode-input-port] and @scheme[reencode-output-port] for -obtaining a UTF-8-based port from one that uses a different encoding -of characters. +a character-based operation, the port's bytes are decoded; see +@secref["mz:encodings"]. The global variable @scheme[eof] is bound to the end-of-file value, and @scheme[eof-object?] returns @scheme[#t] only when applied to this @@ -51,6 +25,7 @@ it produces. @local-table-of-contents[] +@include-section["encodings.scrbl"] @include-section["port-procs.scrbl"] @include-section["port-buffers.scrbl"] @include-section["port-line-counting.scrbl"] diff --git a/collects/scribblings/reference/read.scrbl b/collects/scribblings/reference/read.scrbl index 531fa29b78..f5bc1d56ad 100644 --- a/collects/scribblings/reference/read.scrbl +++ b/collects/scribblings/reference/read.scrbl @@ -119,7 +119,7 @@ quoting @litchar["\\"] or @litchar["|"] vertical-bar quotes and the @litchar{#cs} and @litchar{#ci} prefixes; see @secref["mz:parse-symbol"] for more information. While a module is loaded, the parameter is set to @scheme[#t] (see -@secref["mz:modloadhandler"]).} +@scheme[current-load]).} @defboolparam[read-square-bracket-as-paren on?]{ @@ -141,7 +141,8 @@ A parameter that controls parsing @litchar{#&} input. See @defboolparam[read-accept-compiled on?]{ A parameter that controls parsing @litchar{#~} compiled input. See -@secref["mz:parsing"] for more information.} +@secref["mz:reader"] and @scheme[current-compile] for more +information.} @defboolparam[read-accept-bar-quote on?]{ diff --git a/collects/scribblings/reference/reader.scrbl b/collects/scribblings/reference/reader.scrbl index 7dfab70c47..f0fa4e6553 100644 --- a/collects/scribblings/reference/reader.scrbl +++ b/collects/scribblings/reference/reader.scrbl @@ -120,7 +120,7 @@ on the next character or characters in the input stream as follows: @dispatch[@litchar["#!/"]]{starts a line comment; see @secref["mz:parse-comment"]} @dispatch[@litchar{#`}]{starts a syntax quasiquote; see @secref["mz:parse-quote"]} @dispatch[@litchar{#,}]{starts an syntax unquote or splicing unquote; see @secref["mz:parse-quote"]} - @dispatch[@litchar["#~"]]{starts compiled code; see @secref["compilation"]} + @dispatch[@litchar["#~"]]{starts compiled code; see @scheme[current-compile]} @dispatch[@cilitchar{#i}]{starts a number; see @secref["mz:parse-number"]} @dispatch[@cilitchar{#e}]{starts a number; see @secref["mz:parse-number"]} diff --git a/collects/scribblings/reference/strings.scrbl b/collects/scribblings/reference/strings.scrbl index e284da6319..4bbf5682f8 100644 --- a/collects/scribblings/reference/strings.scrbl +++ b/collects/scribblings/reference/strings.scrbl @@ -105,17 +105,17 @@ Returns an immutable string with the same content as [src-start exact-nonnegative-integer? 0] [src-end exact-nonnegative-integer? (string-length src)]) void?]{ - Changes the characters of @scheme[dest] from positions - @scheme[dest-start] (inclusive) to @scheme[dest-end] (exclusive) to - match the characters in @scheme[src] from @scheme[src-start] - (inclusive). The strings @scheme[dest] and @scheme[src] can be the - same string, and in that case the destination region can overlap with - the source region; the destination characters after the copy match - the source characters from before the copy. If any of - @scheme[dest-start], @scheme[src-start], or @scheme[src-end] - are out of range (taking into account the sizes of the strings and - the source and destination regions), the - @exnraise[exn:fail:contract]. + + Changes the characters of @scheme[dest] starting at position + @scheme[dest-start] to match the characters in @scheme[src] from + @scheme[src-start] (inclusive) to @scheme[src-end] (exclusive). The + strings @scheme[dest] and @scheme[src] can be the same string, and in + that case the destination region can overlap with the source region; + the destination characters after the copy match the source characters + from before the copy. If any of @scheme[dest-start], + @scheme[src-start], or @scheme[src-end] are out of range (taking into + account the sizes of the strings and the source and destination + regions), the @exnraise[exn:fail:contract]. @examples[(define s (string #\A #\p #\p #\l #\e)) (string-copy! s 4 "y") @@ -310,7 +310,7 @@ allocated string).} @defproc[(string-locale=? [str1 string?] [str2 string?] ...+) boolean?]{ Like @scheme[string=?], but the strings are compared in a locale-specific way, based the value of @scheme[current-locale]. See - @secref["locales"] for more information on locales.} + @secref["mz:encodings"] for more information on locales.} @defproc[(string-locale