diff --git a/collects/scribblings/reference/class.scrbl b/collects/scribblings/reference/class.scrbl index 08d555c8ee..e77876a0b7 100644 --- a/collects/scribblings/reference/class.scrbl +++ b/collects/scribblings/reference/class.scrbl @@ -150,6 +150,8 @@ Classes, objects, and interfaces are all values. However, a class or interface is not an object (i.e., there are no ``meta-classes'' or ``meta-interfaces''). +@local-table-of-contents[] + @; ------------------------------------------------------------------------ @section[#:tag "createinterface"]{Creating Interfaces} diff --git a/collects/scribblings/reference/procedures.scrbl b/collects/scribblings/reference/procedures.scrbl index 75a4f93b97..68557ca14f 100644 --- a/collects/scribblings/reference/procedures.scrbl +++ b/collects/scribblings/reference/procedures.scrbl @@ -46,6 +46,15 @@ function consumes. ((compose list split-path) (bytes->path #"/a" 'unix)) ]} +@defproc[(procedure-rename [proc procedure?] + [name symbol?]) + procedure?]{ + +Returns a procedure that is like @scheme[proc], except that its name +as returned by @scheme[object-name] (and as printed for debugging) is +@scheme[name].} + + @; ---------------------------------------- @section{Keywords and Arity} diff --git a/collects/scribblings/reference/regexps.scrbl b/collects/scribblings/reference/regexps.scrbl index 97df718550..9201c4bc19 100644 --- a/collects/scribblings/reference/regexps.scrbl +++ b/collects/scribblings/reference/regexps.scrbl @@ -23,7 +23,7 @@ port, it matches UTF-8 encodings (see @secref["encodings"]) of matching character streams; if a byte regexp is used with a character string, it matches bytes in the UTF-8 encoding of the string. -Regular expressions can be compiled into a @defterm{regexp value} for +Regular expressions can be compiled into a @deftech{regexp value} for repeated matches. The @scheme[regexp] and @scheme[byte-regexp] procedures convert a string or byte string (respectively) into a regexp value using one syntax of regular expressions that is most @@ -103,25 +103,25 @@ arbitrarily large sequence). @defproc[(regexp? [v any/c]) boolean?]{ -Returns @scheme[#t] if @scheme[v] is a regexp value created by +Returns @scheme[#t] if @scheme[v] is a @tech{regexp value} created by @scheme[regexp] or @scheme[pregexp], @scheme[#f] otherwise.} @defproc[(pregexp? [v any/c]) boolean?]{ -Returns @scheme[#t] if @scheme[v] is a regexp value created by +Returns @scheme[#t] if @scheme[v] is a @tech{regexp value} created by @scheme[pregexp] (not @scheme[regexp]), @scheme[#f] otherwise.} @defproc[(byte-regexp? [v any/c]) boolean?]{ -Returns @scheme[#t] if @scheme[v] is a regexp value created by +Returns @scheme[#t] if @scheme[v] is a @tech{regexp value} created by @scheme[byte-regexp] or @scheme[byte-pregexp], @scheme[#f] otherwise.} @defproc[(byte-pregexp? [v any/c]) boolean?]{ -Returns @scheme[#t] if @scheme[v] is a regexp value created by +Returns @scheme[#t] if @scheme[v] is a @tech{regexp value} created by @scheme[byte-pregexp] (not @scheme[byte-regexp]), @scheme[#f] otherwise.} @@ -129,15 +129,15 @@ otherwise.} @defproc[(regexp [str string?]) regexp?]{ Takes a string representation of a regular expression (using the -syntax in @secref["regexp-syntax"]) and compiles it into a regexp -value. Other regular expression procedures accept either a string or a -regexp value as the matching pattern. If a regular expression string +syntax in @secref["regexp-syntax"]) and compiles it into a @tech{regexp +value}. Other regular expression procedures accept either a string or a +@tech{regexp value} as the matching pattern. If a regular expression string is used multiple times, it is faster to compile the string once to a -regexp value and use it for repeated matches instead of using the +@tech{regexp value} and use it for repeated matches instead of using the string each time. The @scheme[object-name] procedure returns -the source string for a regexp value. +the source string for a @tech{regexp value}. @examples[ (regexp "ap*le") @@ -160,10 +160,10 @@ Like @scheme[regexp], except that it uses a slightly different syntax Takes a byte-string representation of a regular expression (using the syntax in @secref["regexp-syntax"]) and compiles it into a -byte-regexp value. +byte-@tech{regexp value}. The @scheme[object-name] procedure -returns the source byte string for a regexp value. +returns the source byte string for a @tech{regexp value}. @examples[ (byte-regexp #"ap*le") @@ -210,8 +210,8 @@ case-sensitively. (listof (or/c bytes? #f)) #f)]{ -Attempts to match @scheme[pattern] (a string, byte string, regexp -value, or byte-regexp value) once to a portion of @scheme[input]. The +Attempts to match @scheme[pattern] (a string, byte string, @tech{regexp +value}, or byte-@tech{regexp value}) once to a portion of @scheme[input]. The matcher finds a portion of @scheme[input] that matches and is closest to the start of the input (after @scheme[start-pos]). @@ -236,7 +236,7 @@ end-of-input @litchar{$} refers to the @scheme[end-pos]th position or If the match fails, @scheme[#f] is returned. If the match succeeds, a list containing strings or byte string, and possibly @scheme[#f], is returned. The list contains strings only if @scheme[input] is a string -and @scheme[pattern] is not a byte regexp value. Otherwise, the list +and @scheme[pattern] is not a byte regexp. Otherwise, the list contains byte strings (substrings of the UTF-8 encoding of @scheme[input], if @scheme[input] is a string). diff --git a/collects/scribblings/reference/struct-inspectors.scrbl b/collects/scribblings/reference/struct-inspectors.scrbl index a59ff6bd1c..e70bb2136d 100644 --- a/collects/scribblings/reference/struct-inspectors.scrbl +++ b/collects/scribblings/reference/struct-inspectors.scrbl @@ -141,10 +141,26 @@ is not controlled by the current inspector, the Returns a value for the name of @scheme[v] if @scheme[v] has a name, @scheme[#f] otherwise. The argument @scheme[v] can be any value, but -only (some) procedures, structs, struct types, struct type properties, -regexp values, and ports have names. The name of a procedure, struct, -struct type, or struct type property is always a symbol. The name of a -regexp value is a string, and a byte-regexp value's name is a byte -string. The name of a port is typically a path or a string, but it can -be arbitrary. See also @secref["infernames"].} +only (some) procedures, @tech{structures}, @tech{structure types}, +@tech{structure type properties}, @tech{regexp values}, and +@tech{ports} have names. See also @secref["infernames"]. + +The name (if any) of a procedure is always a symbol. The +@scheme[procedure-rename] function creates a procedure with a specific +name. + +The name of a @tech{structure}, @tech{structure type}, @tech{structure +type property} is always a symbol. If a @tech{structure} is not a +procedure, its name matches the name of the @tech{structure type} that +it instantiates. + +The name of a @tech{regexp value} is a string or byte string. Passing +the string or byte string to @scheme[regexp], @scheme[byte-regexp], +@scheme[pregexp], or @scheme[byte-pregexp] (depending on the kind of +regexp whose name was extracted) produces a value that matches the +same inputs. + +The name of a port can be any value, but many tools use a path or +string name as the port's for (to report source locations, for +example).} diff --git a/collects/scribblings/reference/struct.scrbl b/collects/scribblings/reference/struct.scrbl index 6836c4a4ee..28ddda6df5 100644 --- a/collects/scribblings/reference/struct.scrbl +++ b/collects/scribblings/reference/struct.scrbl @@ -8,8 +8,6 @@ @guideintro["define-struct"]{structure types via @scheme[define-struct]} -@local-table-of-contents[] - A @deftech{structure type} is a record datatype composing a number of @idefterm{fields}. A @deftech{structure}, an instance of a structure type, is a first-class value that contains a value for each field of @@ -74,6 +72,8 @@ results of applying @scheme[struct->vector] to the structs are @scheme[equal?]. (Consequently, @scheme[equal?] testing for structures depends on the current inspector.) +@local-table-of-contents[] + @;------------------------------------------------------------------------ @include-section["define-struct.scrbl"] diff --git a/collects/tests/mzscheme/basic.ss b/collects/tests/mzscheme/basic.ss index da173fe978..f7ffc265ae 100644 --- a/collects/tests/mzscheme/basic.ss +++ b/collects/tests/mzscheme/basic.ss @@ -2366,7 +2366,9 @@ (check-ok + (list 4 (make-arity-at-least 2)) '(2 3 4 10) '(0 1)) (check-ok + (list 2 (make-arity-at-least 4)) '(2 4 10) '(0 1 3)))]) (check-all-but-one +) + (check-all-but-one (procedure-rename + 'plus)) (check-all-but-one (lambda args (apply + args))) + (check-all-but-one (procedure-rename (lambda args (apply + args)) 'PLUS)) (check-all-but-one (case-lambda [() 0] [(a b . args) (apply + a b args)])) @@ -2386,6 +2388,12 @@ [() 0] [(a b c d . e) (apply + a b c d e)])))) +(test '+ object-name (procedure-reduce-arity + 3)) +(test 'plus object-name (procedure-rename + 'plus)) +(test 'again object-name (procedure-rename (procedure-rename + 'plus) 'again)) +(test 'again object-name (procedure-rename (procedure-reduce-arity + 3) 'again)) +(test 3 procedure-arity (procedure-rename (procedure-reduce-arity + 3) 'again)) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/doc/release-notes/mred/HISTORY.txt b/doc/release-notes/mred/HISTORY.txt index 1d97658d8b..37f8a517db 100644 --- a/doc/release-notes/mred/HISTORY.txt +++ b/doc/release-notes/mred/HISTORY.txt @@ -1,3 +1,9 @@ +Version 4.1.3.7 + +image-snip% implements equal<%> + +---------------------------------------------------------------------- + Version 4.1.3, November 2008 Minor bug fixes diff --git a/doc/release-notes/mzscheme/HISTORY.txt b/doc/release-notes/mzscheme/HISTORY.txt index 5373b6fd59..c225a70f47 100644 --- a/doc/release-notes/mzscheme/HISTORY.txt +++ b/doc/release-notes/mzscheme/HISTORY.txt @@ -1,6 +1,10 @@ +Version 4.1.3.8 +Added procedure-rename + Version 4.1.3.7 -Added `equal?/recur' -Added extra argument to `raise-syntax-error' +Added equal?/recur +Added extra argument to raise-syntax-error +Added equal<%> and interface* to scheme/class Version 4.1.3.6 Memory accounting changed to bias charges to parent instead of children diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index d9ccda9ef8..77b7599b9e 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,80 +1,80 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,55,50,0,0,0,1,0,0,3,0,12,0, -19,0,23,0,28,0,41,0,44,0,49,0,56,0,63,0,67,0,72,0,78, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,56,50,0,0,0,1,0,0,3,0,12,0, +17,0,20,0,27,0,40,0,47,0,51,0,58,0,63,0,68,0,72,0,78, 0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0, 177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,87,1,126,1,165, 1,234,1,42,2,130,2,194,2,199,2,219,2,110,3,130,3,181,3,247,3, 132,4,34,5,84,5,107,5,186,5,0,0,132,7,0,0,29,11,11,68,104, -101,114,101,45,115,116,120,66,100,101,102,105,110,101,63,97,110,100,64,108,101, -116,42,72,112,97,114,97,109,101,116,101,114,105,122,101,62,111,114,64,99,111, -110,100,66,108,101,116,114,101,99,66,117,110,108,101,115,115,63,108,101,116,64, -119,104,101,110,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114,110, +101,114,101,45,115,116,120,64,99,111,110,100,62,111,114,66,108,101,116,114,101, +99,72,112,97,114,97,109,101,116,101,114,105,122,101,66,117,110,108,101,115,115, +63,108,101,116,66,100,101,102,105,110,101,64,119,104,101,110,64,108,101,116,42, +63,97,110,100,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114,110, 101,108,11,29,94,2,13,68,35,37,112,97,114,97,109,122,11,62,105,102,65, 98,101,103,105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101, 115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109, 98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, 45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,98, 10,35,11,8,180,243,94,159,2,15,35,35,159,2,14,35,35,16,20,2,3, -2,1,2,7,2,1,2,4,2,1,2,5,2,1,2,6,2,1,2,9,2, -1,2,8,2,1,2,10,2,1,2,11,2,1,2,12,2,1,97,36,11,8, +2,1,2,5,2,1,2,6,2,1,2,7,2,1,2,8,2,1,2,9,2, +1,2,10,2,1,2,4,2,1,2,11,2,1,2,12,2,1,97,36,11,8, 180,243,93,159,2,14,35,36,16,2,2,2,161,2,1,36,2,2,2,1,2, 2,97,10,11,11,8,180,243,16,0,97,10,37,11,8,180,243,16,0,13,16, 4,35,29,11,11,2,1,11,18,16,2,99,64,104,101,114,101,8,31,8,30, 8,29,8,28,8,27,93,8,224,251,60,0,0,95,9,8,224,251,60,0,0, -2,1,27,248,22,133,4,23,196,1,249,22,190,3,80,158,38,35,251,22,74, -2,16,248,22,89,23,200,2,12,249,22,64,2,17,248,22,91,23,202,1,27, -248,22,133,4,23,196,1,249,22,190,3,80,158,38,35,251,22,74,2,16,248, -22,89,23,200,2,249,22,64,2,17,248,22,91,23,202,1,12,27,248,22,66, -248,22,133,4,23,197,1,28,248,22,72,23,194,2,20,15,159,36,35,36,28, -248,22,72,248,22,66,23,195,2,248,22,65,193,249,22,190,3,80,158,38,35, -251,22,74,2,16,248,22,65,23,200,2,249,22,64,2,4,248,22,66,23,202, +2,1,27,248,22,134,4,23,196,1,249,22,191,3,80,158,38,35,251,22,75, +2,16,248,22,90,23,200,2,12,249,22,65,2,17,248,22,92,23,202,1,27, +248,22,134,4,23,196,1,249,22,191,3,80,158,38,35,251,22,75,2,16,248, +22,90,23,200,2,249,22,65,2,17,248,22,92,23,202,1,12,27,248,22,67, +248,22,134,4,23,197,1,28,248,22,73,23,194,2,20,15,159,36,35,36,28, +248,22,73,248,22,67,23,195,2,248,22,66,193,249,22,191,3,80,158,38,35, +251,22,75,2,16,248,22,66,23,200,2,249,22,65,2,12,248,22,67,23,202, 1,11,18,16,2,101,10,8,31,8,30,8,29,8,28,8,27,16,4,11,11, 2,18,3,1,7,101,110,118,57,55,57,51,16,4,11,11,2,19,3,1,7, 101,110,118,57,55,57,52,93,8,224,252,60,0,0,95,9,8,224,252,60,0, -0,2,1,27,248,22,66,248,22,133,4,23,197,1,28,248,22,72,23,194,2, -20,15,159,36,35,36,28,248,22,72,248,22,66,23,195,2,248,22,65,193,249, -22,190,3,80,158,38,35,250,22,74,2,20,248,22,74,249,22,74,248,22,74, -2,21,248,22,65,23,202,2,251,22,74,2,16,2,21,2,21,249,22,64,2, -7,248,22,66,23,205,1,18,16,2,101,11,8,31,8,30,8,29,8,28,8, +0,2,1,27,248,22,67,248,22,134,4,23,197,1,28,248,22,73,23,194,2, +20,15,159,36,35,36,28,248,22,73,248,22,67,23,195,2,248,22,66,193,249, +22,191,3,80,158,38,35,250,22,75,2,20,248,22,75,249,22,75,248,22,75, +2,21,248,22,66,23,202,2,251,22,75,2,16,2,21,2,21,249,22,65,2, +4,248,22,67,23,205,1,18,16,2,101,11,8,31,8,30,8,29,8,28,8, 27,16,4,11,11,2,18,3,1,7,101,110,118,57,55,57,54,16,4,11,11, 2,19,3,1,7,101,110,118,57,55,57,55,93,8,224,253,60,0,0,95,9, -8,224,253,60,0,0,2,1,248,22,133,4,193,27,248,22,133,4,194,249,22, -64,248,22,74,248,22,65,196,248,22,66,195,27,248,22,66,248,22,133,4,23, -197,1,249,22,190,3,80,158,38,35,28,248,22,52,248,22,191,3,248,22,65, +8,224,253,60,0,0,2,1,248,22,134,4,193,27,248,22,134,4,194,249,22, +65,248,22,75,248,22,66,196,248,22,67,195,27,248,22,67,248,22,134,4,23, +197,1,249,22,191,3,80,158,38,35,28,248,22,53,248,22,128,4,248,22,66, 23,198,2,27,249,22,2,32,0,89,162,8,44,36,42,9,222,33,39,248,22, -133,4,248,22,89,23,200,2,250,22,74,2,22,248,22,74,249,22,74,248,22, -74,248,22,65,23,204,2,250,22,75,2,23,249,22,2,22,65,23,204,2,248, -22,91,23,206,2,249,22,64,248,22,65,23,202,1,249,22,2,22,89,23,200, -1,250,22,75,2,20,249,22,2,32,0,89,162,8,44,36,46,9,222,33,40, -248,22,133,4,248,22,65,201,248,22,66,198,27,248,22,133,4,194,249,22,64, -248,22,74,248,22,65,196,248,22,66,195,27,248,22,66,248,22,133,4,23,197, -1,249,22,190,3,80,158,38,35,250,22,75,2,22,249,22,2,32,0,89,162, -8,44,36,46,9,222,33,42,248,22,133,4,248,22,65,201,248,22,66,198,27, -248,22,66,248,22,133,4,196,27,248,22,133,4,248,22,65,195,249,22,190,3, -80,158,39,35,28,248,22,72,195,250,22,75,2,20,9,248,22,66,199,250,22, -74,2,11,248,22,74,248,22,65,199,250,22,75,2,5,248,22,66,201,248,22, -66,202,27,248,22,66,248,22,133,4,23,197,1,27,249,22,1,22,78,249,22, -2,22,133,4,248,22,133,4,248,22,65,199,249,22,190,3,80,158,39,35,251, -22,74,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110, -45,109,97,114,107,2,24,250,22,75,1,23,101,120,116,101,110,100,45,112,97, +134,4,248,22,90,23,200,2,250,22,75,2,22,248,22,75,249,22,75,248,22, +75,248,22,66,23,204,2,250,22,76,2,23,249,22,2,22,66,23,204,2,248, +22,92,23,206,2,249,22,65,248,22,66,23,202,1,249,22,2,22,90,23,200, +1,250,22,76,2,20,249,22,2,32,0,89,162,8,44,36,46,9,222,33,40, +248,22,134,4,248,22,66,201,248,22,67,198,27,248,22,134,4,194,249,22,65, +248,22,75,248,22,66,196,248,22,67,195,27,248,22,67,248,22,134,4,23,197, +1,249,22,191,3,80,158,38,35,250,22,76,2,22,249,22,2,32,0,89,162, +8,44,36,46,9,222,33,42,248,22,134,4,248,22,66,201,248,22,67,198,27, +248,22,67,248,22,134,4,196,27,248,22,134,4,248,22,66,195,249,22,191,3, +80,158,39,35,28,248,22,73,195,250,22,76,2,20,9,248,22,67,199,250,22, +75,2,8,248,22,75,248,22,66,199,250,22,76,2,11,248,22,67,201,248,22, +67,202,27,248,22,67,248,22,134,4,23,197,1,27,249,22,1,22,79,249,22, +2,22,134,4,248,22,134,4,248,22,66,199,249,22,191,3,80,158,39,35,251, +22,75,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110, +45,109,97,114,107,2,24,250,22,76,1,23,101,120,116,101,110,100,45,112,97, 114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,95,1,27,99,111,110, 116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116,45,102,105, -114,115,116,11,2,24,201,250,22,75,2,20,9,248,22,66,203,27,248,22,66, -248,22,133,4,23,197,1,28,248,22,72,23,194,2,20,15,159,36,35,36,249, -22,190,3,80,158,38,35,27,248,22,133,4,248,22,65,23,198,2,28,249,22, -162,8,62,61,62,248,22,191,3,248,22,89,23,197,2,250,22,74,2,20,248, -22,74,249,22,74,21,93,2,25,248,22,65,199,250,22,75,2,8,249,22,74, -2,25,249,22,74,248,22,98,203,2,25,248,22,66,202,251,22,74,2,16,28, -249,22,162,8,248,22,191,3,248,22,65,23,201,2,64,101,108,115,101,10,248, -22,65,23,198,2,250,22,75,2,20,9,248,22,66,23,201,1,249,22,64,2, -8,248,22,66,23,203,1,100,8,31,8,30,8,29,8,28,8,27,16,4,11, +114,115,116,11,2,24,201,250,22,76,2,20,9,248,22,67,203,27,248,22,67, +248,22,134,4,23,197,1,28,248,22,73,23,194,2,20,15,159,36,35,36,249, +22,191,3,80,158,38,35,27,248,22,134,4,248,22,66,23,198,2,28,249,22, +163,8,62,61,62,248,22,128,4,248,22,90,23,197,2,250,22,75,2,20,248, +22,75,249,22,75,21,93,2,25,248,22,66,199,250,22,76,2,3,249,22,75, +2,25,249,22,75,248,22,99,203,2,25,248,22,67,202,251,22,75,2,16,28, +249,22,163,8,248,22,128,4,248,22,66,23,201,2,64,101,108,115,101,10,248, +22,66,23,198,2,250,22,76,2,20,9,248,22,67,23,201,1,249,22,65,2, +3,248,22,67,23,203,1,100,8,31,8,30,8,29,8,28,8,27,16,4,11, 11,2,18,3,1,7,101,110,118,57,56,49,57,16,4,11,11,2,19,3,1, 7,101,110,118,57,56,50,48,93,8,224,254,60,0,0,18,16,2,158,94,10, -64,118,111,105,100,8,47,95,9,8,224,254,60,0,0,2,1,27,248,22,66, -248,22,133,4,196,249,22,190,3,80,158,38,35,28,248,22,52,248,22,191,3, -248,22,65,197,250,22,74,2,26,248,22,74,248,22,65,199,248,22,89,198,27, -248,22,191,3,248,22,65,197,250,22,74,2,26,248,22,74,248,22,65,197,250, -22,75,2,23,248,22,66,199,248,22,66,202,159,35,20,103,159,35,16,1,11, +64,118,111,105,100,8,47,95,9,8,224,254,60,0,0,2,1,27,248,22,67, +248,22,134,4,196,249,22,191,3,80,158,38,35,28,248,22,53,248,22,128,4, +248,22,66,197,250,22,75,2,26,248,22,75,248,22,66,199,248,22,90,198,27, +248,22,128,4,248,22,66,197,250,22,75,2,26,248,22,75,248,22,66,197,250, +22,76,2,23,248,22,67,199,248,22,67,202,159,35,20,103,159,35,16,1,11, 16,0,83,158,41,20,100,143,69,35,37,109,105,110,45,115,116,120,2,1,11, 10,11,10,35,80,158,35,35,20,103,159,35,16,0,16,0,11,11,16,1,2, 2,36,16,0,35,16,0,35,11,11,38,35,11,11,16,10,2,3,2,4,2, @@ -82,25 +82,25 @@ 11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2, 9,2,10,2,11,2,12,35,45,36,11,11,16,0,16,0,16,0,35,35,11, 11,11,16,0,16,0,16,0,35,35,16,11,16,5,2,2,20,15,159,35,35, -35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,2,10,89,162,8,44, +35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,2,7,89,162,8,44, 36,52,9,223,0,33,33,35,20,103,159,35,16,1,2,2,16,0,11,16,5, -2,12,89,162,8,44,36,52,9,223,0,33,34,35,20,103,159,35,16,1,2, -2,16,0,11,16,5,2,4,89,162,8,44,36,52,9,223,0,33,35,35,20, -103,159,35,16,1,2,2,16,1,33,36,11,16,5,2,7,89,162,8,44,36, +2,10,89,162,8,44,36,52,9,223,0,33,34,35,20,103,159,35,16,1,2, +2,16,0,11,16,5,2,12,89,162,8,44,36,52,9,223,0,33,35,35,20, +103,159,35,16,1,2,2,16,1,33,36,11,16,5,2,4,89,162,8,44,36, 55,9,223,0,33,37,35,20,103,159,35,16,1,2,2,16,1,33,38,11,16, -5,2,11,89,162,8,44,36,57,9,223,0,33,41,35,20,103,159,35,16,1, -2,2,16,0,11,16,5,2,9,89,162,8,44,36,52,9,223,0,33,43,35, -20,103,159,35,16,1,2,2,16,0,11,16,5,2,5,89,162,8,44,36,53, +5,2,8,89,162,8,44,36,57,9,223,0,33,41,35,20,103,159,35,16,1, +2,2,16,0,11,16,5,2,5,89,162,8,44,36,52,9,223,0,33,43,35, +20,103,159,35,16,1,2,2,16,0,11,16,5,2,11,89,162,8,44,36,53, 9,223,0,33,44,35,20,103,159,35,16,1,2,2,16,0,11,16,5,2,6, 89,162,8,44,36,54,9,223,0,33,45,35,20,103,159,35,16,1,2,2,16, -0,11,16,5,2,8,89,162,8,44,36,57,9,223,0,33,46,35,20,103,159, -35,16,1,2,2,16,1,33,48,11,16,5,2,3,89,162,8,44,36,53,9, +0,11,16,5,2,3,89,162,8,44,36,57,9,223,0,33,46,35,20,103,159, +35,16,1,2,2,16,1,33,48,11,16,5,2,9,89,162,8,44,36,53,9, 223,0,33,49,35,20,103,159,35,16,1,2,2,16,0,11,16,0,94,2,14, 2,15,93,2,14,9,9,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 2045); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,55,59,0,0,0,1,0,0,13,0,18,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,56,59,0,0,0,1,0,0,13,0,18,0, 35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0,226, 0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,154,1, 199,1,223,1,6,2,8,2,65,2,155,3,196,3,31,5,135,5,239,5,100, @@ -132,176 +132,176 @@ 116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100, 100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32, 112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50,250,80,158,39,51, -249,22,27,11,80,158,41,50,22,180,12,10,248,22,155,5,23,196,2,28,248, -22,152,6,23,194,2,12,87,94,248,22,166,8,23,194,1,248,80,159,37,53, -36,195,28,248,22,72,23,195,2,9,27,248,22,65,23,196,2,27,28,248,22, -161,13,23,195,2,23,194,1,28,248,22,160,13,23,195,2,249,22,162,13,23, -196,1,250,80,158,42,48,248,22,176,13,2,19,11,10,250,80,158,40,48,248, -22,176,13,2,19,23,197,1,10,28,23,193,2,249,22,64,248,22,164,13,249, -22,162,13,23,198,1,247,22,177,13,27,248,22,66,23,200,1,28,248,22,72, -23,194,2,9,27,248,22,65,23,195,2,27,28,248,22,161,13,23,195,2,23, -194,1,28,248,22,160,13,23,195,2,249,22,162,13,23,196,1,250,80,158,47, -48,248,22,176,13,2,19,11,10,250,80,158,45,48,248,22,176,13,2,19,23, -197,1,10,28,23,193,2,249,22,64,248,22,164,13,249,22,162,13,23,198,1, -247,22,177,13,248,80,159,45,52,36,248,22,66,23,199,1,87,94,23,193,1, -248,80,159,43,52,36,248,22,66,23,197,1,87,94,23,193,1,27,248,22,66, -23,198,1,28,248,22,72,23,194,2,9,27,248,22,65,23,195,2,27,28,248, -22,161,13,23,195,2,23,194,1,28,248,22,160,13,23,195,2,249,22,162,13, -23,196,1,250,80,158,45,48,248,22,176,13,2,19,11,10,250,80,158,43,48, -248,22,176,13,2,19,23,197,1,10,28,23,193,2,249,22,64,248,22,164,13, -249,22,162,13,23,198,1,247,22,177,13,248,80,159,43,52,36,248,22,66,23, -199,1,248,80,159,41,52,36,248,22,66,196,27,248,22,137,13,23,195,2,28, -23,193,2,192,87,94,23,193,1,28,248,22,157,6,23,195,2,27,248,22,159, -13,195,28,192,192,248,22,160,13,195,11,87,94,28,28,248,22,138,13,23,195, -2,10,27,248,22,137,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28, -248,22,157,6,23,196,2,27,248,22,159,13,23,197,2,28,23,193,2,192,87, -94,23,193,1,248,22,160,13,23,197,2,11,12,250,22,130,9,76,110,111,114, +249,22,27,11,80,158,41,50,22,181,12,10,248,22,156,5,23,196,2,28,248, +22,153,6,23,194,2,12,87,94,248,22,167,8,23,194,1,248,80,159,37,53, +36,195,28,248,22,73,23,195,2,9,27,248,22,66,23,196,2,27,28,248,22, +162,13,23,195,2,23,194,1,28,248,22,161,13,23,195,2,249,22,163,13,23, +196,1,250,80,158,42,48,248,22,177,13,2,19,11,10,250,80,158,40,48,248, +22,177,13,2,19,23,197,1,10,28,23,193,2,249,22,65,248,22,165,13,249, +22,163,13,23,198,1,247,22,178,13,27,248,22,67,23,200,1,28,248,22,73, +23,194,2,9,27,248,22,66,23,195,2,27,28,248,22,162,13,23,195,2,23, +194,1,28,248,22,161,13,23,195,2,249,22,163,13,23,196,1,250,80,158,47, +48,248,22,177,13,2,19,11,10,250,80,158,45,48,248,22,177,13,2,19,23, +197,1,10,28,23,193,2,249,22,65,248,22,165,13,249,22,163,13,23,198,1, +247,22,178,13,248,80,159,45,52,36,248,22,67,23,199,1,87,94,23,193,1, +248,80,159,43,52,36,248,22,67,23,197,1,87,94,23,193,1,27,248,22,67, +23,198,1,28,248,22,73,23,194,2,9,27,248,22,66,23,195,2,27,28,248, +22,162,13,23,195,2,23,194,1,28,248,22,161,13,23,195,2,249,22,163,13, +23,196,1,250,80,158,45,48,248,22,177,13,2,19,11,10,250,80,158,43,48, +248,22,177,13,2,19,23,197,1,10,28,23,193,2,249,22,65,248,22,165,13, +249,22,163,13,23,198,1,247,22,178,13,248,80,159,43,52,36,248,22,67,23, +199,1,248,80,159,41,52,36,248,22,67,196,27,248,22,138,13,23,195,2,28, +23,193,2,192,87,94,23,193,1,28,248,22,158,6,23,195,2,27,248,22,160, +13,195,28,192,192,248,22,161,13,195,11,87,94,28,28,248,22,139,13,23,195, +2,10,27,248,22,138,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28, +248,22,158,6,23,196,2,27,248,22,160,13,23,197,2,28,23,193,2,192,87, +94,23,193,1,248,22,161,13,23,197,2,11,12,250,22,131,9,76,110,111,114, 109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32, 40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118, 97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,28,28, -248,22,138,13,23,195,2,249,22,162,8,248,22,139,13,23,197,2,2,20,249, -22,162,8,247,22,176,7,2,20,27,28,248,22,157,6,23,196,2,23,195,2, -248,22,166,7,248,22,142,13,23,197,2,28,249,22,189,13,0,21,35,114,120, +248,22,139,13,23,195,2,249,22,163,8,248,22,140,13,23,197,2,2,20,249, +22,163,8,247,22,177,7,2,20,27,28,248,22,158,6,23,196,2,23,195,2, +248,22,167,7,248,22,143,13,23,197,2,28,249,22,190,13,0,21,35,114,120, 34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,23,195,2, -28,248,22,157,6,195,248,22,145,13,195,194,27,248,22,132,7,23,195,1,249, -22,146,13,248,22,169,7,250,22,131,14,0,6,35,114,120,34,47,34,28,249, -22,189,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47, -92,92,93,42,36,34,23,201,2,23,199,1,250,22,131,14,0,19,35,114,120, +28,248,22,158,6,195,248,22,146,13,195,194,27,248,22,133,7,23,195,1,249, +22,147,13,248,22,170,7,250,22,132,14,0,6,35,114,120,34,47,34,28,249, +22,190,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47, +92,92,93,42,36,34,23,201,2,23,199,1,250,22,132,14,0,19,35,114,120, 34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202,1,6,2, -2,92,49,80,159,43,36,37,2,20,28,248,22,157,6,194,248,22,145,13,194, -193,87,94,28,27,248,22,137,13,23,196,2,28,23,193,2,192,87,94,23,193, -1,28,248,22,157,6,23,196,2,27,248,22,159,13,23,197,2,28,23,193,2, -192,87,94,23,193,1,248,22,160,13,23,197,2,11,12,250,22,130,9,23,196, -2,2,21,23,197,2,28,248,22,159,13,23,195,2,12,248,22,156,11,249,22, -165,10,248,22,186,6,250,22,141,7,2,22,23,200,1,23,201,1,247,22,23, -87,94,28,27,248,22,137,13,23,196,2,28,23,193,2,192,87,94,23,193,1, -28,248,22,157,6,23,196,2,27,248,22,159,13,23,197,2,28,23,193,2,192, -87,94,23,193,1,248,22,160,13,23,197,2,11,12,250,22,130,9,23,196,2, -2,21,23,197,2,28,248,22,159,13,23,195,2,12,248,22,156,11,249,22,165, -10,248,22,186,6,250,22,141,7,2,22,23,200,1,23,201,1,247,22,23,87, -94,87,94,28,27,248,22,137,13,23,196,2,28,23,193,2,192,87,94,23,193, -1,28,248,22,157,6,23,196,2,27,248,22,159,13,23,197,2,28,23,193,2, -192,87,94,23,193,1,248,22,160,13,23,197,2,11,12,250,22,130,9,195,2, -21,23,197,2,28,248,22,159,13,23,195,2,12,248,22,156,11,249,22,165,10, -248,22,186,6,250,22,141,7,2,22,199,23,201,1,247,22,23,249,22,3,89, -162,8,44,36,49,9,223,2,33,33,196,248,22,156,11,249,22,131,11,23,196, +2,92,49,80,159,43,36,37,2,20,28,248,22,158,6,194,248,22,146,13,194, +193,87,94,28,27,248,22,138,13,23,196,2,28,23,193,2,192,87,94,23,193, +1,28,248,22,158,6,23,196,2,27,248,22,160,13,23,197,2,28,23,193,2, +192,87,94,23,193,1,248,22,161,13,23,197,2,11,12,250,22,131,9,23,196, +2,2,21,23,197,2,28,248,22,160,13,23,195,2,12,248,22,157,11,249,22, +166,10,248,22,187,6,250,22,142,7,2,22,23,200,1,23,201,1,247,22,23, +87,94,28,27,248,22,138,13,23,196,2,28,23,193,2,192,87,94,23,193,1, +28,248,22,158,6,23,196,2,27,248,22,160,13,23,197,2,28,23,193,2,192, +87,94,23,193,1,248,22,161,13,23,197,2,11,12,250,22,131,9,23,196,2, +2,21,23,197,2,28,248,22,160,13,23,195,2,12,248,22,157,11,249,22,166, +10,248,22,187,6,250,22,142,7,2,22,23,200,1,23,201,1,247,22,23,87, +94,87,94,28,27,248,22,138,13,23,196,2,28,23,193,2,192,87,94,23,193, +1,28,248,22,158,6,23,196,2,27,248,22,160,13,23,197,2,28,23,193,2, +192,87,94,23,193,1,248,22,161,13,23,197,2,11,12,250,22,131,9,195,2, +21,23,197,2,28,248,22,160,13,23,195,2,12,248,22,157,11,249,22,166,10, +248,22,187,6,250,22,142,7,2,22,199,23,201,1,247,22,23,249,22,3,89, +162,8,44,36,49,9,223,2,33,33,196,248,22,157,11,249,22,132,11,23,196, 1,247,22,23,87,94,250,80,159,38,39,36,2,6,196,197,251,80,159,39,41, 36,2,6,32,0,89,162,8,44,36,44,9,222,33,35,197,198,32,37,89,162, -43,41,58,65,99,108,111,111,112,222,33,38,28,248,22,72,23,199,2,87,94, -23,198,1,248,23,196,1,251,22,141,7,2,23,23,199,1,28,248,22,72,23, -203,2,87,94,23,202,1,23,201,1,250,22,1,22,155,13,23,204,1,23,205, -1,23,198,1,27,249,22,155,13,248,22,65,23,202,2,23,199,2,28,248,22, -150,13,23,194,2,27,250,22,1,22,155,13,23,197,1,23,202,2,28,248,22, -150,13,23,194,2,192,87,94,23,193,1,27,248,22,66,23,202,1,28,248,22, -72,23,194,2,87,94,23,193,1,248,23,199,1,251,22,141,7,2,23,23,202, -1,28,248,22,72,23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,155, -13,23,207,1,23,208,1,23,201,1,27,249,22,155,13,248,22,65,23,197,2, -23,202,2,28,248,22,150,13,23,194,2,27,250,22,1,22,155,13,23,197,1, -204,28,248,22,150,13,193,192,253,2,37,203,204,205,206,23,15,248,22,66,201, -253,2,37,202,203,204,205,206,248,22,66,200,87,94,23,193,1,27,248,22,66, -23,201,1,28,248,22,72,23,194,2,87,94,23,193,1,248,23,198,1,251,22, -141,7,2,23,23,201,1,28,248,22,72,23,205,2,87,94,23,204,1,23,203, -1,250,22,1,22,155,13,23,206,1,23,207,1,23,200,1,27,249,22,155,13, -248,22,65,23,197,2,23,201,2,28,248,22,150,13,23,194,2,27,250,22,1, -22,155,13,23,197,1,203,28,248,22,150,13,193,192,253,2,37,202,203,204,205, -206,248,22,66,201,253,2,37,201,202,203,204,205,248,22,66,200,27,247,22,178, -13,253,2,37,198,199,200,201,202,198,87,95,28,28,248,22,138,13,23,194,2, -10,27,248,22,137,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248, -22,157,6,23,195,2,27,248,22,159,13,23,196,2,28,23,193,2,192,87,94, -23,193,1,248,22,160,13,23,196,2,11,12,252,22,130,9,23,200,2,2,24, -35,23,198,2,23,199,2,28,28,248,22,157,6,23,195,2,10,248,22,145,7, -23,195,2,87,94,23,194,1,12,252,22,130,9,23,200,2,2,25,36,23,198, -2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,158,13,23,197,2,87, -94,23,195,1,87,94,28,192,12,250,22,131,9,23,201,1,2,26,23,199,1, -249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,138, -13,23,196,2,10,27,248,22,137,13,23,197,2,28,23,193,2,192,87,94,23, -193,1,28,248,22,157,6,23,197,2,27,248,22,159,13,23,198,2,28,23,193, -2,192,87,94,23,193,1,248,22,160,13,23,198,2,11,12,252,22,130,9,2, -9,2,24,35,23,200,2,23,201,2,28,28,248,22,157,6,23,197,2,10,248, -22,145,7,23,197,2,12,252,22,130,9,2,9,2,25,36,23,200,2,23,201, -2,91,159,38,11,90,161,38,35,11,248,22,158,13,23,199,2,87,94,23,195, -1,87,94,28,192,12,250,22,131,9,2,9,2,26,23,201,2,249,22,7,194, -195,27,249,22,147,13,250,22,130,14,0,18,35,114,120,35,34,40,91,46,93, -91,94,46,93,42,124,41,36,34,248,22,143,13,23,201,1,28,248,22,157,6, -23,203,2,249,22,169,7,23,204,1,8,63,23,202,1,28,248,22,138,13,23, -199,2,248,22,139,13,23,199,1,87,94,23,198,1,247,22,140,13,28,248,22, -137,13,194,249,22,155,13,195,194,192,91,159,37,11,90,161,37,35,11,87,95, -28,28,248,22,138,13,23,196,2,10,27,248,22,137,13,23,197,2,28,23,193, -2,192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,159,13,23, -198,2,28,23,193,2,192,87,94,23,193,1,248,22,160,13,23,198,2,11,12, -252,22,130,9,2,10,2,24,35,23,200,2,23,201,2,28,28,248,22,157,6, -23,197,2,10,248,22,145,7,23,197,2,12,252,22,130,9,2,10,2,25,36, -23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,158,13,23,199, -2,87,94,23,195,1,87,94,28,192,12,250,22,131,9,2,10,2,26,23,201, -2,249,22,7,194,195,27,249,22,147,13,249,22,155,7,250,22,131,14,0,9, -35,114,120,35,34,91,46,93,34,248,22,143,13,23,203,1,6,1,1,95,28, -248,22,157,6,23,202,2,249,22,169,7,23,203,1,8,63,23,201,1,28,248, -22,138,13,23,199,2,248,22,139,13,23,199,1,87,94,23,198,1,247,22,140, -13,28,248,22,137,13,194,249,22,155,13,195,194,192,249,247,22,188,4,194,11, -249,80,158,37,46,9,9,249,80,158,37,46,195,9,27,247,22,180,13,249,80, -158,38,47,28,23,195,2,27,248,22,174,7,6,11,11,80,76,84,67,79,76, +43,41,58,65,99,108,111,111,112,222,33,38,28,248,22,73,23,199,2,87,94, +23,198,1,248,23,196,1,251,22,142,7,2,23,23,199,1,28,248,22,73,23, +203,2,87,94,23,202,1,23,201,1,250,22,1,22,156,13,23,204,1,23,205, +1,23,198,1,27,249,22,156,13,248,22,66,23,202,2,23,199,2,28,248,22, +151,13,23,194,2,27,250,22,1,22,156,13,23,197,1,23,202,2,28,248,22, +151,13,23,194,2,192,87,94,23,193,1,27,248,22,67,23,202,1,28,248,22, +73,23,194,2,87,94,23,193,1,248,23,199,1,251,22,142,7,2,23,23,202, +1,28,248,22,73,23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,156, +13,23,207,1,23,208,1,23,201,1,27,249,22,156,13,248,22,66,23,197,2, +23,202,2,28,248,22,151,13,23,194,2,27,250,22,1,22,156,13,23,197,1, +204,28,248,22,151,13,193,192,253,2,37,203,204,205,206,23,15,248,22,67,201, +253,2,37,202,203,204,205,206,248,22,67,200,87,94,23,193,1,27,248,22,67, +23,201,1,28,248,22,73,23,194,2,87,94,23,193,1,248,23,198,1,251,22, +142,7,2,23,23,201,1,28,248,22,73,23,205,2,87,94,23,204,1,23,203, +1,250,22,1,22,156,13,23,206,1,23,207,1,23,200,1,27,249,22,156,13, +248,22,66,23,197,2,23,201,2,28,248,22,151,13,23,194,2,27,250,22,1, +22,156,13,23,197,1,203,28,248,22,151,13,193,192,253,2,37,202,203,204,205, +206,248,22,67,201,253,2,37,201,202,203,204,205,248,22,67,200,27,247,22,179, +13,253,2,37,198,199,200,201,202,198,87,95,28,28,248,22,139,13,23,194,2, +10,27,248,22,138,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248, +22,158,6,23,195,2,27,248,22,160,13,23,196,2,28,23,193,2,192,87,94, +23,193,1,248,22,161,13,23,196,2,11,12,252,22,131,9,23,200,2,2,24, +35,23,198,2,23,199,2,28,28,248,22,158,6,23,195,2,10,248,22,146,7, +23,195,2,87,94,23,194,1,12,252,22,131,9,23,200,2,2,25,36,23,198, +2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,159,13,23,197,2,87, +94,23,195,1,87,94,28,192,12,250,22,132,9,23,201,1,2,26,23,199,1, +249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,139, +13,23,196,2,10,27,248,22,138,13,23,197,2,28,23,193,2,192,87,94,23, +193,1,28,248,22,158,6,23,197,2,27,248,22,160,13,23,198,2,28,23,193, +2,192,87,94,23,193,1,248,22,161,13,23,198,2,11,12,252,22,131,9,2, +9,2,24,35,23,200,2,23,201,2,28,28,248,22,158,6,23,197,2,10,248, +22,146,7,23,197,2,12,252,22,131,9,2,9,2,25,36,23,200,2,23,201, +2,91,159,38,11,90,161,38,35,11,248,22,159,13,23,199,2,87,94,23,195, +1,87,94,28,192,12,250,22,132,9,2,9,2,26,23,201,2,249,22,7,194, +195,27,249,22,148,13,250,22,131,14,0,18,35,114,120,35,34,40,91,46,93, +91,94,46,93,42,124,41,36,34,248,22,144,13,23,201,1,28,248,22,158,6, +23,203,2,249,22,170,7,23,204,1,8,63,23,202,1,28,248,22,139,13,23, +199,2,248,22,140,13,23,199,1,87,94,23,198,1,247,22,141,13,28,248,22, +138,13,194,249,22,156,13,195,194,192,91,159,37,11,90,161,37,35,11,87,95, +28,28,248,22,139,13,23,196,2,10,27,248,22,138,13,23,197,2,28,23,193, +2,192,87,94,23,193,1,28,248,22,158,6,23,197,2,27,248,22,160,13,23, +198,2,28,23,193,2,192,87,94,23,193,1,248,22,161,13,23,198,2,11,12, +252,22,131,9,2,10,2,24,35,23,200,2,23,201,2,28,28,248,22,158,6, +23,197,2,10,248,22,146,7,23,197,2,12,252,22,131,9,2,10,2,25,36, +23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,159,13,23,199, +2,87,94,23,195,1,87,94,28,192,12,250,22,132,9,2,10,2,26,23,201, +2,249,22,7,194,195,27,249,22,148,13,249,22,156,7,250,22,132,14,0,9, +35,114,120,35,34,91,46,93,34,248,22,144,13,23,203,1,6,1,1,95,28, +248,22,158,6,23,202,2,249,22,170,7,23,203,1,8,63,23,201,1,28,248, +22,139,13,23,199,2,248,22,140,13,23,199,1,87,94,23,198,1,247,22,141, +13,28,248,22,138,13,194,249,22,156,13,195,194,192,249,247,22,189,4,194,11, +249,80,158,37,46,9,9,249,80,158,37,46,195,9,27,247,22,181,13,249,80, +158,38,47,28,23,195,2,27,248,22,175,7,6,11,11,80,76,84,67,79,76, 76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22, -155,13,248,22,176,13,69,97,100,100,111,110,45,100,105,114,247,22,172,7,6, -8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,78, -23,203,1,248,22,74,248,22,176,13,72,99,111,108,108,101,99,116,115,45,100, -105,114,23,204,1,28,23,194,2,249,22,64,23,196,1,23,195,1,192,32,47, -89,162,8,44,38,54,2,18,222,33,48,27,249,22,187,13,23,197,2,23,198, -2,28,23,193,2,87,94,23,196,1,27,248,22,89,23,195,2,27,27,248,22, -98,23,197,1,27,249,22,187,13,23,201,2,23,196,2,28,23,193,2,87,94, -23,194,1,27,248,22,89,23,195,2,27,250,2,47,23,203,2,23,204,1,248, -22,98,23,199,1,28,249,22,151,7,23,196,2,2,27,249,22,78,23,202,2, -194,249,22,64,248,22,146,13,23,197,1,23,195,1,87,95,23,199,1,23,193, -1,28,249,22,151,7,23,196,2,2,27,249,22,78,23,200,2,9,249,22,64, -248,22,146,13,23,197,1,9,28,249,22,151,7,23,196,2,2,27,249,22,78, -197,194,87,94,23,196,1,249,22,64,248,22,146,13,23,197,1,194,87,94,23, -193,1,28,249,22,151,7,23,198,2,2,27,249,22,78,195,9,87,94,23,194, -1,249,22,64,248,22,146,13,23,199,1,9,87,95,28,28,248,22,145,7,194, -10,248,22,157,6,194,12,250,22,130,9,2,13,6,21,21,98,121,116,101,32, +156,13,248,22,177,13,69,97,100,100,111,110,45,100,105,114,247,22,173,7,6, +8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,79, +23,203,1,248,22,75,248,22,177,13,72,99,111,108,108,101,99,116,115,45,100, +105,114,23,204,1,28,23,194,2,249,22,65,23,196,1,23,195,1,192,32,47, +89,162,8,44,38,54,2,18,222,33,48,27,249,22,188,13,23,197,2,23,198, +2,28,23,193,2,87,94,23,196,1,27,248,22,90,23,195,2,27,27,248,22, +99,23,197,1,27,249,22,188,13,23,201,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,90,23,195,2,27,250,2,47,23,203,2,23,204,1,248, +22,99,23,199,1,28,249,22,152,7,23,196,2,2,27,249,22,79,23,202,2, +194,249,22,65,248,22,147,13,23,197,1,23,195,1,87,95,23,199,1,23,193, +1,28,249,22,152,7,23,196,2,2,27,249,22,79,23,200,2,9,249,22,65, +248,22,147,13,23,197,1,9,28,249,22,152,7,23,196,2,2,27,249,22,79, +197,194,87,94,23,196,1,249,22,65,248,22,147,13,23,197,1,194,87,94,23, +193,1,28,249,22,152,7,23,198,2,2,27,249,22,79,195,9,87,94,23,194, +1,249,22,65,248,22,147,13,23,199,1,9,87,95,28,28,248,22,146,7,194, +10,248,22,158,6,194,12,250,22,131,9,2,13,6,21,21,98,121,116,101,32, 115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22, -73,195,249,22,4,22,137,13,196,11,12,250,22,130,9,2,13,6,13,13,108, +74,195,249,22,4,22,138,13,196,11,12,250,22,131,9,2,13,6,13,13,108, 105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,47,197,195,28,248,22, -157,6,197,248,22,168,7,197,196,32,50,89,162,8,44,39,57,2,18,222,33, +158,6,197,248,22,169,7,197,196,32,50,89,162,8,44,39,57,2,18,222,33, 53,32,51,89,162,8,44,38,54,70,102,111,117,110,100,45,101,120,101,99,222, -33,52,28,23,193,2,91,159,38,11,90,161,38,35,11,248,22,158,13,23,199, -2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,163,13,23,201, -2,28,249,22,164,8,23,195,2,23,202,2,11,28,248,22,159,13,23,194,2, -250,2,51,23,201,2,23,202,2,249,22,155,13,23,200,2,23,198,1,250,2, +33,52,28,23,193,2,91,159,38,11,90,161,38,35,11,248,22,159,13,23,199, +2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,164,13,23,201, +2,28,249,22,165,8,23,195,2,23,202,2,11,28,248,22,160,13,23,194,2, +250,2,51,23,201,2,23,202,2,249,22,156,13,23,200,2,23,198,1,250,2, 51,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1, -27,28,248,22,137,13,23,196,2,27,249,22,155,13,23,198,2,23,201,2,28, -28,248,22,150,13,193,10,248,22,149,13,193,192,11,11,28,23,193,2,192,87, -94,23,193,1,28,23,199,2,11,27,248,22,163,13,23,202,2,28,249,22,164, -8,23,195,2,23,203,1,11,28,248,22,159,13,23,194,2,250,2,51,23,202, -1,23,203,1,249,22,155,13,23,201,1,23,198,1,250,2,51,201,202,195,194, -28,248,22,72,23,197,2,11,27,248,22,162,13,248,22,65,23,199,2,27,249, -22,155,13,23,196,1,23,197,2,28,248,22,149,13,23,194,2,250,2,51,198, -199,195,87,94,23,193,1,27,248,22,66,23,200,1,28,248,22,72,23,194,2, -11,27,248,22,162,13,248,22,65,23,196,2,27,249,22,155,13,23,196,1,23, -200,2,28,248,22,149,13,23,194,2,250,2,51,201,202,195,87,94,23,193,1, -27,248,22,66,23,197,1,28,248,22,72,23,194,2,11,27,248,22,162,13,248, -22,65,195,27,249,22,155,13,23,196,1,202,28,248,22,149,13,193,250,2,51, -204,205,195,251,2,50,204,205,206,248,22,66,199,87,95,28,27,248,22,137,13, -23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,157,6,23,196,2, -27,248,22,159,13,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,160, -13,23,197,2,11,12,250,22,130,9,2,14,6,25,25,112,97,116,104,32,111, +27,28,248,22,138,13,23,196,2,27,249,22,156,13,23,198,2,23,201,2,28, +28,248,22,151,13,193,10,248,22,150,13,193,192,11,11,28,23,193,2,192,87, +94,23,193,1,28,23,199,2,11,27,248,22,164,13,23,202,2,28,249,22,165, +8,23,195,2,23,203,1,11,28,248,22,160,13,23,194,2,250,2,51,23,202, +1,23,203,1,249,22,156,13,23,201,1,23,198,1,250,2,51,201,202,195,194, +28,248,22,73,23,197,2,11,27,248,22,163,13,248,22,66,23,199,2,27,249, +22,156,13,23,196,1,23,197,2,28,248,22,150,13,23,194,2,250,2,51,198, +199,195,87,94,23,193,1,27,248,22,67,23,200,1,28,248,22,73,23,194,2, +11,27,248,22,163,13,248,22,66,23,196,2,27,249,22,156,13,23,196,1,23, +200,2,28,248,22,150,13,23,194,2,250,2,51,201,202,195,87,94,23,193,1, +27,248,22,67,23,197,1,28,248,22,73,23,194,2,11,27,248,22,163,13,248, +22,66,195,27,249,22,156,13,23,196,1,202,28,248,22,150,13,193,250,2,51, +204,205,195,251,2,50,204,205,206,248,22,67,199,87,95,28,27,248,22,138,13, +23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,158,6,23,196,2, +27,248,22,160,13,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,161, +13,23,197,2,11,12,250,22,131,9,2,14,6,25,25,112,97,116,104,32,111, 114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197, -2,28,28,23,195,2,28,27,248,22,137,13,23,197,2,28,23,193,2,192,87, -94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,159,13,23,198,2,28, -23,193,2,192,87,94,23,193,1,248,22,160,13,23,198,2,11,248,22,159,13, -23,196,2,11,10,12,250,22,130,9,2,14,6,29,29,35,102,32,111,114,32, +2,28,28,23,195,2,28,27,248,22,138,13,23,197,2,28,23,193,2,192,87, +94,23,193,1,28,248,22,158,6,23,197,2,27,248,22,160,13,23,198,2,28, +23,193,2,192,87,94,23,193,1,248,22,161,13,23,198,2,11,248,22,160,13, +23,196,2,11,10,12,250,22,131,9,2,14,6,29,29,35,102,32,111,114,32, 114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105, -110,103,23,198,2,28,28,248,22,159,13,23,195,2,91,159,38,11,90,161,38, -35,11,248,22,158,13,23,198,2,249,22,162,8,194,68,114,101,108,97,116,105, -118,101,11,27,248,22,174,7,6,4,4,80,65,84,72,251,2,50,23,199,1, +110,103,23,198,2,28,28,248,22,160,13,23,195,2,91,159,38,11,90,161,38, +35,11,248,22,159,13,23,198,2,249,22,163,8,194,68,114,101,108,97,116,105, +118,101,11,27,248,22,175,7,6,4,4,80,65,84,72,251,2,50,23,199,1, 23,200,1,23,201,1,28,23,197,2,27,249,80,159,43,47,37,23,200,1,9, -28,249,22,162,8,247,22,176,7,2,20,249,22,64,248,22,146,13,5,1,46, -23,195,1,192,9,27,248,22,162,13,23,196,1,28,248,22,149,13,193,250,2, +28,249,22,163,8,247,22,177,7,2,20,249,22,65,248,22,147,13,5,1,46, +23,195,1,192,9,27,248,22,163,13,23,196,1,28,248,22,150,13,193,250,2, 51,198,199,195,11,250,80,158,38,48,196,197,11,250,80,158,38,48,196,11,11, -87,94,249,22,148,6,247,22,184,4,195,248,22,174,5,249,22,170,3,35,249, -22,154,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1, -87,94,23,197,1,27,248,22,176,13,2,19,27,249,80,159,40,48,37,23,196, -1,11,27,27,248,22,173,3,23,200,1,28,192,192,35,27,27,248,22,173,3, -23,202,1,28,192,192,35,249,22,151,5,23,197,1,83,158,39,20,97,95,89, -162,8,44,35,47,9,224,3,2,33,57,23,195,1,23,196,1,27,248,22,136, +87,94,249,22,149,6,247,22,185,4,195,248,22,175,5,249,22,171,3,35,249, +22,155,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1, +87,94,23,197,1,27,248,22,177,13,2,19,27,249,80,159,40,48,37,23,196, +1,11,27,27,248,22,174,3,23,200,1,28,192,192,35,27,27,248,22,174,3, +23,202,1,28,192,192,35,249,22,152,5,23,197,1,83,158,39,20,97,95,89, +162,8,44,35,47,9,224,3,2,33,57,23,195,1,23,196,1,27,248,22,137, 5,23,195,1,248,80,159,38,53,36,193,159,35,20,103,159,35,16,1,11,16, 0,83,158,41,20,100,143,67,35,37,117,116,105,108,115,29,11,11,11,11,10, 10,42,80,158,35,35,20,103,159,37,16,17,2,1,2,2,2,3,2,4,2, @@ -317,7 +317,7 @@ 0,16,17,83,158,35,16,2,89,162,43,36,48,2,18,223,0,33,28,80,159, 35,53,36,83,158,35,16,2,89,162,8,44,36,55,2,18,223,0,33,29,80, 159,35,52,36,83,158,35,16,2,32,0,89,162,43,36,44,2,1,222,33,30, -80,159,35,35,36,83,158,35,16,2,249,22,159,6,7,92,7,92,80,159,35, +80,159,35,35,36,83,158,35,16,2,249,22,160,6,7,92,7,92,80,159,35, 36,36,83,158,35,16,2,89,162,43,36,53,2,3,223,0,33,31,80,159,35, 37,36,83,158,35,16,2,32,0,89,162,8,44,37,49,2,4,222,33,32,80, 159,35,38,36,83,158,35,16,2,32,0,89,162,8,44,38,50,2,5,222,33, @@ -330,8 +330,8 @@ 36,43,2,11,222,33,43,80,159,35,45,36,83,158,35,16,2,83,158,38,20, 96,96,2,12,89,162,43,35,43,9,223,0,33,44,89,162,43,36,44,9,223, 0,33,45,89,162,43,37,54,9,223,0,33,46,80,159,35,46,36,83,158,35, -16,2,27,248,22,183,13,248,22,168,7,27,28,249,22,162,8,247,22,176,7, -2,20,6,1,1,59,6,1,1,58,250,22,141,7,6,14,14,40,91,94,126, +16,2,27,248,22,184,13,248,22,169,7,27,28,249,22,163,8,247,22,177,7, +2,20,6,1,1,59,6,1,1,58,250,22,142,7,6,14,14,40,91,94,126, 97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,37, 47,2,13,223,0,33,49,80,159,35,47,36,83,158,35,16,2,83,158,38,20, 96,96,2,14,89,162,8,44,38,53,9,223,0,33,54,89,162,43,37,46,9, @@ -342,7 +342,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 5009); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,55,8,0,0,0,1,0,0,6,0,19,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,56,8,0,0,0,1,0,0,6,0,19,0, 34,0,48,0,62,0,76,0,111,0,0,0,1,1,0,0,65,113,117,111,116, 101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37, 110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122, @@ -360,7 +360,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 294); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,55,52,0,0,0,1,0,0,11,0,38,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,56,52,0,0,0,1,0,0,11,0,38,0, 44,0,57,0,71,0,93,0,119,0,131,0,149,0,169,0,181,0,197,0,220, 0,0,1,5,1,10,1,15,1,24,1,29,1,60,1,64,1,72,1,81,1, 89,1,196,1,241,1,5,2,34,2,65,2,121,2,131,2,178,2,188,2,195, @@ -382,149 +382,149 @@ 110,97,116,105,118,101,64,108,111,111,112,1,29,115,116,97,110,100,97,114,100, 45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114, 63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80,159,37,45,37, -249,80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,162,8,23,197,2, -80,159,38,46,37,87,94,23,195,1,80,159,36,47,37,27,248,22,171,4,23, -197,2,28,248,22,137,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22, -158,13,23,197,1,87,95,83,160,37,11,80,159,40,46,37,198,83,160,37,11, +249,80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,163,8,23,197,2, +80,159,38,46,37,87,94,23,195,1,80,159,36,47,37,27,248,22,172,4,23, +197,2,28,248,22,138,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22, +159,13,23,197,1,87,95,83,160,37,11,80,159,40,46,37,198,83,160,37,11, 80,159,40,47,37,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247, -22,189,4,28,192,192,247,22,177,13,20,14,159,80,158,35,39,250,80,158,38, -40,249,22,27,11,80,158,40,39,22,189,4,28,248,22,137,13,23,198,2,23, -197,1,87,94,23,197,1,247,22,177,13,247,194,250,22,155,13,23,197,1,23, -199,1,249,80,158,42,38,23,198,1,2,17,252,22,155,13,23,199,1,23,201, -1,2,18,247,22,177,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87, -94,23,194,1,27,250,22,172,13,196,11,32,0,89,162,8,44,35,40,9,222, -11,28,192,249,22,64,195,194,11,27,252,22,155,13,23,200,1,23,202,1,2, -18,247,22,177,7,249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22, -172,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,64,195, -194,11,249,247,22,182,13,248,22,65,195,195,27,250,22,155,13,23,198,1,23, -200,1,249,80,158,43,38,23,199,1,2,17,27,250,22,172,13,196,11,32,0, -89,162,8,44,35,40,9,222,11,28,192,249,22,64,195,194,11,249,247,22,187, -4,248,22,65,195,195,249,247,22,187,4,194,195,87,94,28,248,80,158,36,37, -23,195,2,12,250,22,130,9,77,108,111,97,100,47,117,115,101,45,99,111,109, +22,190,4,28,192,192,247,22,178,13,20,14,159,80,158,35,39,250,80,158,38, +40,249,22,27,11,80,158,40,39,22,190,4,28,248,22,138,13,23,198,2,23, +197,1,87,94,23,197,1,247,22,178,13,247,194,250,22,156,13,23,197,1,23, +199,1,249,80,158,42,38,23,198,1,2,17,252,22,156,13,23,199,1,23,201, +1,2,18,247,22,178,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87, +94,23,194,1,27,250,22,173,13,196,11,32,0,89,162,8,44,35,40,9,222, +11,28,192,249,22,65,195,194,11,27,252,22,156,13,23,200,1,23,202,1,2, +18,247,22,178,7,249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22, +173,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,65,195, +194,11,249,247,22,183,13,248,22,66,195,195,27,250,22,156,13,23,198,1,23, +200,1,249,80,158,43,38,23,199,1,2,17,27,250,22,173,13,196,11,32,0, +89,162,8,44,35,40,9,222,11,28,192,249,22,65,195,194,11,249,247,22,188, +4,248,22,66,195,195,249,247,22,188,4,194,195,87,94,28,248,80,158,36,37, +23,195,2,12,250,22,131,9,77,108,111,97,100,47,117,115,101,45,99,111,109, 112,105,108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100, 45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161, -36,35,11,28,248,22,161,13,23,201,2,23,200,1,27,247,22,189,4,28,23, -193,2,249,22,162,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,158, -13,23,194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,162,8,23,196, +36,35,11,28,248,22,162,13,23,201,2,23,200,1,27,247,22,190,4,28,23, +193,2,249,22,163,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,159, +13,23,194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,163,8,23,196, 2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2,16,23,194,1,90, -161,36,40,11,247,22,179,13,27,89,162,43,36,49,62,122,111,225,7,5,3, +161,36,40,11,247,22,180,13,27,89,162,43,36,49,62,122,111,225,7,5,3, 33,27,27,89,162,43,36,51,9,225,8,6,4,33,28,27,249,22,5,89,162, 8,44,36,46,9,223,5,33,29,23,203,2,27,28,23,195,1,27,249,22,5, 89,162,8,44,36,52,9,225,13,11,9,33,30,23,205,2,27,28,23,196,2, -11,193,28,192,192,28,193,28,23,196,2,28,249,22,166,3,248,22,66,196,248, -22,66,23,199,2,193,11,11,11,11,28,23,193,2,249,80,159,47,54,36,202, +11,193,28,192,192,28,193,28,23,196,2,28,249,22,167,3,248,22,67,196,248, +22,67,23,199,2,193,11,11,11,11,28,23,193,2,249,80,159,47,54,36,202, 89,162,43,35,45,9,224,14,2,33,31,87,94,23,193,1,27,28,23,197,1, 27,249,22,5,83,158,39,20,97,94,89,162,8,44,36,50,9,225,14,12,10, 33,32,23,203,1,23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28, -249,22,166,3,248,22,66,196,248,22,66,199,193,11,11,11,11,28,192,249,80, +249,22,167,3,248,22,67,196,248,22,67,199,193,11,11,11,11,28,192,249,80, 159,48,54,36,203,89,162,43,35,45,9,224,15,2,33,33,249,80,159,48,54, 36,203,89,162,43,35,44,9,224,15,7,33,34,32,36,89,162,8,44,36,54, 2,19,222,33,38,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42, -41,36,34,27,249,22,187,13,2,37,23,196,2,28,23,193,2,87,94,23,194, -1,249,22,64,248,22,89,23,196,2,27,248,22,98,23,197,1,27,249,22,187, -13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,64,248,22,89, -23,196,2,27,248,22,98,23,197,1,27,249,22,187,13,2,37,23,196,2,28, -23,193,2,87,94,23,194,1,249,22,64,248,22,89,23,196,2,248,2,36,248, -22,98,23,197,1,248,22,74,194,248,22,74,194,248,22,74,194,32,39,89,162, -43,36,54,2,19,222,33,40,28,248,22,72,248,22,66,23,195,2,249,22,7, -9,248,22,65,195,91,159,37,11,90,161,37,35,11,27,248,22,66,23,197,2, -28,248,22,72,248,22,66,23,195,2,249,22,7,9,248,22,65,195,91,159,37, -11,90,161,37,35,11,27,248,22,66,23,197,2,28,248,22,72,248,22,66,23, -195,2,249,22,7,9,248,22,65,195,91,159,37,11,90,161,37,35,11,248,2, -39,248,22,66,23,197,2,249,22,7,249,22,64,248,22,65,23,200,1,23,197, -1,195,249,22,7,249,22,64,248,22,65,23,200,1,23,197,1,195,249,22,7, -249,22,64,248,22,65,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28, -194,192,248,2,39,193,87,95,28,248,22,169,4,195,12,250,22,130,9,2,20, +41,36,34,27,249,22,188,13,2,37,23,196,2,28,23,193,2,87,94,23,194, +1,249,22,65,248,22,90,23,196,2,27,248,22,99,23,197,1,27,249,22,188, +13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,65,248,22,90, +23,196,2,27,248,22,99,23,197,1,27,249,22,188,13,2,37,23,196,2,28, +23,193,2,87,94,23,194,1,249,22,65,248,22,90,23,196,2,248,2,36,248, +22,99,23,197,1,248,22,75,194,248,22,75,194,248,22,75,194,32,39,89,162, +43,36,54,2,19,222,33,40,28,248,22,73,248,22,67,23,195,2,249,22,7, +9,248,22,66,195,91,159,37,11,90,161,37,35,11,27,248,22,67,23,197,2, +28,248,22,73,248,22,67,23,195,2,249,22,7,9,248,22,66,195,91,159,37, +11,90,161,37,35,11,27,248,22,67,23,197,2,28,248,22,73,248,22,67,23, +195,2,249,22,7,9,248,22,66,195,91,159,37,11,90,161,37,35,11,248,2, +39,248,22,67,23,197,2,249,22,7,249,22,65,248,22,66,23,200,1,23,197, +1,195,249,22,7,249,22,65,248,22,66,23,200,1,23,197,1,195,249,22,7, +249,22,65,248,22,66,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28, +194,192,248,2,39,193,87,95,28,248,22,170,4,195,12,250,22,131,9,2,20, 6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97, 116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250, -22,138,2,80,159,41,42,37,248,22,143,14,247,22,184,11,11,28,23,193,2, -192,87,94,23,193,1,27,247,22,122,87,94,250,22,136,2,80,159,42,42,37, -248,22,143,14,247,22,184,11,195,192,250,22,136,2,195,198,66,97,116,116,97, -99,104,251,211,197,198,199,10,28,192,250,22,129,9,11,196,195,248,22,191,8, -194,28,249,22,163,6,194,6,1,1,46,2,16,28,249,22,163,6,194,6,2, -2,46,46,62,117,112,192,28,249,22,164,8,248,22,66,23,200,2,23,197,1, -28,249,22,162,8,248,22,65,23,200,2,23,196,1,251,22,191,8,2,20,6, +22,139,2,80,159,41,42,37,248,22,144,14,247,22,185,11,11,28,23,193,2, +192,87,94,23,193,1,27,247,22,123,87,94,250,22,137,2,80,159,42,42,37, +248,22,144,14,247,22,185,11,195,192,250,22,137,2,195,198,66,97,116,116,97, +99,104,251,211,197,198,199,10,28,192,250,22,130,9,11,196,195,248,22,128,9, +194,28,249,22,164,6,194,6,1,1,46,2,16,28,249,22,164,6,194,6,2, +2,46,46,62,117,112,192,28,249,22,165,8,248,22,67,23,200,2,23,197,1, +28,249,22,163,8,248,22,66,23,200,2,23,196,1,251,22,128,9,2,20,6, 26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116, -32,126,101,58,32,126,101,23,200,1,249,22,2,22,66,248,22,79,249,22,64, -23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22,64, -248,22,143,14,247,22,184,11,23,197,1,20,14,159,80,158,39,39,250,80,158, -42,40,249,22,27,11,80,158,44,39,22,151,4,23,196,1,249,247,22,188,4, -23,198,1,248,22,53,248,22,141,13,23,198,1,87,94,28,28,248,22,137,13, -23,197,2,10,248,22,175,4,23,197,2,12,28,23,198,2,250,22,129,9,11, +32,126,101,58,32,126,101,23,200,1,249,22,2,22,67,248,22,80,249,22,65, +23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22,65, +248,22,144,14,247,22,185,11,23,197,1,20,14,159,80,158,39,39,250,80,158, +42,40,249,22,27,11,80,158,44,39,22,152,4,23,196,1,249,247,22,189,4, +23,198,1,248,22,54,248,22,142,13,23,198,1,87,94,28,28,248,22,138,13, +23,197,2,10,248,22,176,4,23,197,2,12,28,23,198,2,250,22,130,9,11, 6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2, -250,22,130,9,2,20,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32, -111,114,32,112,97,116,104,23,199,2,28,28,248,22,62,23,197,2,249,22,162, -8,248,22,65,23,199,2,2,3,11,248,22,170,4,248,22,89,197,28,28,248, -22,62,23,197,2,249,22,162,8,248,22,65,23,199,2,66,112,108,97,110,101, +250,22,131,9,2,20,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32, +111,114,32,112,97,116,104,23,199,2,28,28,248,22,63,23,197,2,249,22,163, +8,248,22,66,23,199,2,2,3,11,248,22,171,4,248,22,90,197,28,28,248, +22,63,23,197,2,249,22,163,8,248,22,66,23,199,2,66,112,108,97,110,101, 116,11,87,94,28,207,12,20,14,159,80,158,37,39,250,80,158,40,40,249,22, -27,11,80,158,42,39,22,184,11,23,197,1,90,161,36,35,10,249,22,152,4, +27,11,80,158,42,39,22,185,11,23,197,1,90,161,36,35,10,249,22,153,4, 21,94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111,108,118,101, 114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,110, 97,109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201,202,87,94, 23,193,1,27,89,162,8,44,36,45,79,115,104,111,119,45,99,111,108,108,101, -99,116,105,111,110,45,101,114,114,223,6,33,44,27,28,248,22,52,23,199,2, -27,250,22,138,2,80,159,43,43,37,249,22,64,23,204,2,247,22,178,13,11, +99,116,105,111,110,45,101,114,114,223,6,33,44,27,28,248,22,53,23,199,2, +27,250,22,139,2,80,159,43,43,37,249,22,65,23,204,2,247,22,179,13,11, 28,23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80, -159,44,48,36,248,22,55,23,204,2,11,27,251,80,158,47,50,2,20,23,202, -1,28,248,22,72,23,199,2,23,199,2,248,22,65,23,199,2,28,248,22,72, -23,199,2,9,248,22,66,23,199,2,249,22,155,13,23,195,1,28,248,22,72, -23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,180, -6,23,199,1,6,3,3,46,115,115,28,248,22,157,6,23,199,2,87,94,23, -194,1,27,248,80,159,41,55,36,23,201,2,27,250,22,138,2,80,159,44,43, -37,249,22,64,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,193,1, +159,44,48,36,248,22,56,23,204,2,11,27,251,80,158,47,50,2,20,23,202, +1,28,248,22,73,23,199,2,23,199,2,248,22,66,23,199,2,28,248,22,73, +23,199,2,9,248,22,67,23,199,2,249,22,156,13,23,195,1,28,248,22,73, +23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,181, +6,23,199,1,6,3,3,46,115,115,28,248,22,158,6,23,199,2,87,94,23, +194,1,27,248,80,159,41,55,36,23,201,2,27,250,22,139,2,80,159,44,43, +37,249,22,65,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,193,1, 91,159,37,11,90,161,37,35,11,249,80,159,45,48,36,23,204,2,11,250,22, -1,22,155,13,23,199,1,249,22,78,249,22,2,32,0,89,162,8,44,36,43, -9,222,33,45,23,200,1,248,22,74,23,200,1,28,248,22,137,13,23,199,2, -87,94,23,194,1,28,248,22,160,13,23,199,2,23,198,2,248,22,74,6,26, +1,22,156,13,23,199,1,249,22,79,249,22,2,32,0,89,162,8,44,36,43, +9,222,33,45,23,200,1,248,22,75,23,200,1,28,248,22,138,13,23,199,2, +87,94,23,194,1,28,248,22,161,13,23,199,2,23,198,2,248,22,75,6,26, 26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115, -111,108,117,116,101,41,28,249,22,162,8,248,22,65,23,201,2,2,21,27,250, -22,138,2,80,159,43,43,37,249,22,64,23,204,2,247,22,178,13,11,28,23, +111,108,117,116,101,41,28,249,22,163,8,248,22,66,23,201,2,2,21,27,250, +22,139,2,80,159,43,43,37,249,22,65,23,204,2,247,22,179,13,11,28,23, 193,2,192,87,94,23,193,1,91,159,38,11,90,161,37,35,11,249,80,159,45, -48,36,248,22,89,23,205,2,11,90,161,36,37,11,28,248,22,72,248,22,91, -23,204,2,28,248,22,72,23,194,2,249,22,189,13,0,8,35,114,120,34,91, -46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,78,28,248,22,72, -248,22,91,23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,78, -249,22,2,80,159,51,56,36,248,22,91,23,211,2,23,197,2,28,248,22,72, -23,196,2,248,22,74,23,197,2,23,195,2,251,80,158,49,50,2,20,23,204, -1,248,22,65,23,198,2,248,22,66,23,198,1,249,22,155,13,23,195,1,28, -23,198,1,87,94,23,196,1,23,197,1,28,248,22,72,23,197,1,87,94,23, -197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,189,13,0,8,35,114, -120,34,91,46,93,34,23,199,2,23,197,1,249,22,180,6,23,199,1,6,3, -3,46,115,115,28,249,22,162,8,248,22,65,23,201,2,64,102,105,108,101,249, -22,162,13,248,22,166,13,248,22,89,23,202,2,248,80,159,42,55,36,23,202, -2,12,87,94,28,28,248,22,137,13,23,194,2,10,248,22,179,7,23,194,2, -87,94,23,200,1,12,28,23,200,2,250,22,129,9,67,114,101,113,117,105,114, -101,249,22,141,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97, -116,104,126,97,28,23,198,2,248,22,65,23,199,2,6,0,0,23,203,1,87, -94,23,200,1,250,22,130,9,2,20,249,22,141,7,6,13,13,109,111,100,117, -108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,65,23,199,2,6,0, -0,23,201,2,27,28,248,22,179,7,23,195,2,249,22,184,7,23,196,2,35, -249,22,164,13,248,22,165,13,23,197,2,11,27,28,248,22,179,7,23,196,2, -249,22,184,7,23,197,2,36,248,80,158,42,51,23,195,2,91,159,38,11,90, -161,38,35,11,28,248,22,179,7,23,199,2,250,22,7,2,22,249,22,184,7, -23,203,2,37,2,22,248,22,158,13,23,198,2,87,95,23,195,1,23,193,1, -27,28,248,22,179,7,23,200,2,249,22,184,7,23,201,2,38,249,80,158,47, -52,23,197,2,5,0,27,28,248,22,179,7,23,201,2,249,22,184,7,23,202, -2,39,248,22,170,4,23,200,2,27,27,250,22,138,2,80,159,51,42,37,248, -22,143,14,247,22,184,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, -122,87,94,250,22,136,2,80,159,52,42,37,248,22,143,14,247,22,184,11,195, -192,87,95,28,23,209,1,27,250,22,138,2,23,197,2,197,11,28,23,193,1, +48,36,248,22,90,23,205,2,11,90,161,36,37,11,28,248,22,73,248,22,92, +23,204,2,28,248,22,73,23,194,2,249,22,190,13,0,8,35,114,120,34,91, +46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,79,28,248,22,73, +248,22,92,23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,79, +249,22,2,80,159,51,56,36,248,22,92,23,211,2,23,197,2,28,248,22,73, +23,196,2,248,22,75,23,197,2,23,195,2,251,80,158,49,50,2,20,23,204, +1,248,22,66,23,198,2,248,22,67,23,198,1,249,22,156,13,23,195,1,28, +23,198,1,87,94,23,196,1,23,197,1,28,248,22,73,23,197,1,87,94,23, +197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,190,13,0,8,35,114, +120,34,91,46,93,34,23,199,2,23,197,1,249,22,181,6,23,199,1,6,3, +3,46,115,115,28,249,22,163,8,248,22,66,23,201,2,64,102,105,108,101,249, +22,163,13,248,22,167,13,248,22,90,23,202,2,248,80,159,42,55,36,23,202, +2,12,87,94,28,28,248,22,138,13,23,194,2,10,248,22,180,7,23,194,2, +87,94,23,200,1,12,28,23,200,2,250,22,130,9,67,114,101,113,117,105,114, +101,249,22,142,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97, +116,104,126,97,28,23,198,2,248,22,66,23,199,2,6,0,0,23,203,1,87, +94,23,200,1,250,22,131,9,2,20,249,22,142,7,6,13,13,109,111,100,117, +108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,66,23,199,2,6,0, +0,23,201,2,27,28,248,22,180,7,23,195,2,249,22,185,7,23,196,2,35, +249,22,165,13,248,22,166,13,23,197,2,11,27,28,248,22,180,7,23,196,2, +249,22,185,7,23,197,2,36,248,80,158,42,51,23,195,2,91,159,38,11,90, +161,38,35,11,28,248,22,180,7,23,199,2,250,22,7,2,22,249,22,185,7, +23,203,2,37,2,22,248,22,159,13,23,198,2,87,95,23,195,1,23,193,1, +27,28,248,22,180,7,23,200,2,249,22,185,7,23,201,2,38,249,80,158,47, +52,23,197,2,5,0,27,28,248,22,180,7,23,201,2,249,22,185,7,23,202, +2,39,248,22,171,4,23,200,2,27,27,250,22,139,2,80,159,51,42,37,248, +22,144,14,247,22,185,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, +123,87,94,250,22,137,2,80,159,52,42,37,248,22,144,14,247,22,185,11,195, +192,87,95,28,23,209,1,27,250,22,139,2,23,197,2,197,11,28,23,193,1, 12,87,95,27,27,28,248,22,17,80,159,51,45,37,80,159,50,45,37,247,22, 19,250,22,25,248,22,23,23,197,2,80,159,53,44,37,23,196,1,27,248,22, -143,14,247,22,184,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54, +144,14,247,22,185,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54, 9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,159, 50,45,37,32,0,89,162,43,36,41,9,222,33,47,80,159,49,57,36,89,162, -43,35,50,9,227,14,9,8,4,3,33,48,250,22,136,2,23,197,1,197,10, -12,28,28,248,22,179,7,23,202,1,11,27,248,22,157,6,23,208,2,28,192, -192,28,248,22,62,23,208,2,249,22,162,8,248,22,65,23,210,2,2,21,11, -250,22,136,2,80,159,50,43,37,28,248,22,157,6,23,210,2,249,22,64,23, -211,1,248,80,159,53,55,36,23,213,1,87,94,23,210,1,249,22,64,23,211, -1,247,22,178,13,252,22,181,7,23,208,1,23,207,1,23,205,1,23,203,1, +43,35,50,9,227,14,9,8,4,3,33,48,250,22,137,2,23,197,1,197,10, +12,28,28,248,22,180,7,23,202,1,11,27,248,22,158,6,23,208,2,28,192, +192,28,248,22,63,23,208,2,249,22,163,8,248,22,66,23,210,2,2,21,11, +250,22,137,2,80,159,50,43,37,28,248,22,158,6,23,210,2,249,22,65,23, +211,1,248,80,159,53,55,36,23,213,1,87,94,23,210,1,249,22,65,23,211, +1,247,22,179,13,252,22,182,7,23,208,1,23,207,1,23,205,1,23,203,1, 201,12,193,91,159,37,10,90,161,36,35,10,11,90,161,36,36,10,83,158,38, 20,96,96,2,20,89,162,8,44,36,50,9,224,2,0,33,42,89,162,43,38, 48,9,223,1,33,43,89,162,43,39,8,30,9,225,2,3,0,33,49,208,87, -95,248,22,150,4,248,80,159,37,49,37,247,22,184,11,248,22,188,4,80,159, -36,36,37,248,22,175,12,80,159,36,41,36,159,35,20,103,159,35,16,1,11, +95,248,22,151,4,248,80,159,37,49,37,247,22,185,11,248,22,189,4,80,159, +36,36,37,248,22,176,12,80,159,36,41,36,159,35,20,103,159,35,16,1,11, 16,0,83,158,41,20,100,143,66,35,37,98,111,111,116,29,11,11,11,11,10, 10,36,80,158,35,35,20,103,159,39,16,19,2,1,2,2,30,2,4,72,112, 97,116,104,45,115,116,114,105,110,103,63,10,30,2,4,75,112,97,116,104,45, @@ -543,12 +543,12 @@ 43,36,44,9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43, 36,48,67,103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158, 35,16,2,89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26, -80,159,35,54,36,83,158,35,16,2,248,22,176,7,69,115,111,45,115,117,102, +80,159,35,54,36,83,158,35,16,2,248,22,177,7,69,115,111,45,115,117,102, 102,105,120,80,159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,2,223, 0,33,35,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41, -2,6,222,192,80,159,35,41,36,83,158,35,16,2,247,22,125,80,159,35,42, -36,83,158,35,16,2,247,22,124,80,159,35,43,36,83,158,35,16,2,247,22, -60,80,159,35,44,36,83,158,35,16,2,248,22,18,74,109,111,100,117,108,101, +2,6,222,192,80,159,35,41,36,83,158,35,16,2,247,22,126,80,159,35,42, +36,83,158,35,16,2,247,22,125,80,159,35,43,36,83,158,35,16,2,247,22, +61,80,159,35,44,36,83,158,35,16,2,248,22,18,74,109,111,100,117,108,101, 45,108,111,97,100,105,110,103,80,159,35,45,36,83,158,35,16,2,11,80,158, 35,46,83,158,35,16,2,11,80,158,35,47,83,158,35,16,2,32,0,89,162, 43,37,44,2,13,222,33,41,80,159,35,48,36,83,158,35,16,2,89,162,8, diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index c4354e75f5..f5f304012e 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -137,6 +137,7 @@ static Scheme_Object *procedure_arity(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_arity_p(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_arity_includes(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]); +static Scheme_Object *procedure_rename(int argc, Scheme_Object *argv[]); static Scheme_Object *procedure_equal_closure_p(int argc, Scheme_Object *argv[]); static Scheme_Object *primitive_p(int argc, Scheme_Object *argv[]); static Scheme_Object *primitive_closure_p(int argc, Scheme_Object *argv[]); @@ -497,6 +498,11 @@ scheme_init_fun (Scheme_Env *env) "procedure-reduce-arity", 2, 2), env); + scheme_add_global_constant("procedure-rename", + scheme_make_prim_w_arity(procedure_rename, + "procedure-rename", + 2, 2), + env); scheme_add_global_constant("procedure-closure-contents-eq?", scheme_make_folding_prim(procedure_equal_closure_p, "procedure-closure-contents-eq?", @@ -3133,15 +3139,21 @@ Scheme_Object *scheme_proc_struct_name_source(Scheme_Object *a) Scheme_Object *b; while (SCHEME_PROC_STRUCTP(a)) { - /* Either use struct name, or extract proc, depending - whether it's method-style */ - int is_method; - b = scheme_extract_struct_procedure(a, -1, NULL, &is_method); - if (!is_method && SCHEME_PROCP(b)) { - a = b; - SCHEME_USE_FUEL(1); - } else - break; + if (scheme_reduced_procedure_struct + && scheme_is_struct_instance(scheme_reduced_procedure_struct, a) + && SCHEME_TRUEP(((Scheme_Structure *)a)->slots[2])) { + return a; + } else { + /* Either use struct name, or extract proc, depending + whether it's method-style */ + int is_method; + b = scheme_extract_struct_procedure(a, -1, NULL, &is_method); + if (!is_method && SCHEME_PROCP(b)) { + a = b; + SCHEME_USE_FUEL(1); + } else + break; + } } return a; @@ -3200,15 +3212,28 @@ const char *scheme_get_proc_name(Scheme_Object *p, int *len, int for_error) Scheme_Object *other; other = scheme_proc_struct_name_source(p); if (SAME_OBJ(other, p)) { - Scheme_Object *sym; - sym = SCHEME_STRUCT_NAME_SYM(p); - *len = SCHEME_SYM_LEN(sym); - s = (char *)scheme_malloc_atomic((*len) + 8); - memcpy(s, "struct ", 7); - memcpy(s + 7, scheme_symbol_val(sym), *len); - (*len) += 7; - s[*len] = 0; - return s; + if (scheme_reduced_procedure_struct + && scheme_is_struct_instance(scheme_reduced_procedure_struct, p)) { + /* It must have a name: */ + Scheme_Object *sym = ((Scheme_Structure *)p)->slots[2]; + if (for_error < 0) { + s = (char *)sym; + *len = -1; + } else { + *len = SCHEME_SYM_LEN(sym); + s = scheme_symbol_val(sym); + } + } else { + Scheme_Object *sym; + sym = SCHEME_STRUCT_NAME_SYM(p); + *len = SCHEME_SYM_LEN(sym); + s = (char *)scheme_malloc_atomic((*len) + 8); + memcpy(s, "struct ", 7); + memcpy(s + 7, scheme_symbol_val(sym), *len); + (*len) += 7; + s[*len] = 0; + return s; + } } else { p = other; goto top; @@ -3288,8 +3313,16 @@ static Scheme_Object *object_name(int argc, Scheme_Object **argv) { Scheme_Object *a = argv[0]; - if (SCHEME_PROC_STRUCTP(a)) + if (SCHEME_PROC_STRUCTP(a)) { a = scheme_proc_struct_name_source(a); + + if (SCHEME_STRUCTP(a) + && scheme_reduced_procedure_struct + && scheme_is_struct_instance(scheme_reduced_procedure_struct, a)) { + /* It must have a name: */ + return ((Scheme_Structure *)a)->slots[2]; + } + } if (SCHEME_STRUCTP(a)) { return SCHEME_STRUCT_NAME_SYM(a); @@ -3417,18 +3450,11 @@ static int is_arity(Scheme_Object *a, int at_least_ok, int list_ok) return 0; } -static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) +static void init_reduced_proc_struct() { - Scheme_Object *orig, *req, *oa, *ra, *ol, *lra, *ara, *prev, *pr, *tmp, *a[3]; - - if (!SCHEME_PROCP(argv[0])) - scheme_wrong_type("procedure-reduce-arity", "procedure", 0, argc, argv); - - if (!is_arity(argv[1], 1, 1)) { - scheme_wrong_type("procedure-reduce-arity", "arity", 1, argc, argv); - } - if (!scheme_reduced_procedure_struct) { + Scheme_Object *pr, *orig; + REGISTER_SO(scheme_reduced_procedure_struct); pr = scheme_get_param(scheme_current_config(), MZCONFIG_INSPECTOR); while (((Scheme_Inspector *)pr)->superior->superior) { @@ -3438,18 +3464,52 @@ static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) scheme_reduced_procedure_struct = scheme_make_proc_struct_type(NULL, NULL, pr, - 2, 0, + 3, 0, scheme_false, scheme_make_integer(0), NULL); } +} + +static Scheme_Object *make_reduced_proc(Scheme_Object *proc, Scheme_Object *aty, Scheme_Object *name) +{ + Scheme_Object *a[3]; + + if (SCHEME_STRUCTP(proc) + && scheme_is_struct_instance(scheme_reduced_procedure_struct, proc)) { + /* Don't need the intermediate layer */ + if (!name) + name = ((Scheme_Structure *)proc)->slots[2]; + proc = ((Scheme_Structure *)proc)->slots[0]; + } + + a[0] = proc; + a[1] = aty; + a[2] = (name ? name : scheme_false); + + return scheme_make_struct_instance(scheme_reduced_procedure_struct, 3, a); +} + +static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) +{ + Scheme_Object *orig, *req, *aty, *oa, *ra, *ol, *lra, *ara, *prev, *pr, *tmp; + + if (!SCHEME_PROCP(argv[0])) + scheme_wrong_type("procedure-reduce-arity", "procedure", 0, argc, argv); + + if (!is_arity(argv[1], 1, 1)) { + scheme_wrong_type("procedure-reduce-arity", "arity", 1, argc, argv); + } + + init_reduced_proc_struct(); /* Check whether current arity covers the requested arity. This is a bit complicated, because both the source and target can be lists that include arity-at-least records. */ orig = get_or_check_arity(argv[0], -1, NULL); - req = argv[1]; + aty = clone_arity(argv[1]); + req = aty; if (!SCHEME_PAIRP(orig) && !SCHEME_NULLP(orig)) orig = scheme_make_pair(orig, scheme_null); @@ -3574,12 +3634,23 @@ static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) } /* Construct a procedure that has the given arity. */ + return make_reduced_proc(argv[0], aty, NULL); +} - a[0] = argv[0]; - pr = clone_arity(argv[1]); - a[1] = pr; +static Scheme_Object *procedure_rename(int argc, Scheme_Object *argv[]) +{ + Scheme_Object *aty; - return scheme_make_struct_instance(scheme_reduced_procedure_struct, 2, a); + if (!SCHEME_PROCP(argv[0])) + scheme_wrong_type("procedure-rename", "procedure", 0, argc, argv); + if (!SCHEME_SYMBOLP(argv[1])) + scheme_wrong_type("procedure-rename", "symbol", 1, argc, argv); + + init_reduced_proc_struct(); + + aty = get_or_check_arity(argv[0], -1, NULL); + + return make_reduced_proc(argv[0], aty, argv[1]); } static Scheme_Object *procedure_equal_closure_p(int argc, Scheme_Object *argv[]) diff --git a/src/mzscheme/src/print.c b/src/mzscheme/src/print.c index e148da794e..746f83350e 100644 --- a/src/mzscheme/src/print.c +++ b/src/mzscheme/src/print.c @@ -1977,20 +1977,28 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, src = obj; if (SAME_OBJ(src, obj)) { + int l; + const char *s; + Scheme_Object *name; + print_utf8_string(pp, "#<", 0, 2); /* used to have "struct:" prefix */ - { - int l; - const char *s; - Scheme_Object *name = SCHEME_STRUCT_NAME_SYM(obj); - - s = scheme_symbol_name_and_size(name, (unsigned int *)&l, - (pp->print_struct - ? SCHEME_SNF_FOR_TS - : (pp->can_read_pipe_quote - ? SCHEME_SNF_PIPE_QUOTE - : SCHEME_SNF_NO_PIPE_QUOTE))); - print_utf8_string(pp, s, 0, l); - } + if (scheme_reduced_procedure_struct + && scheme_is_struct_instance(scheme_reduced_procedure_struct, obj)) { + /* Since scheme_proc_struct_name_source() didn't redirect, this one + must have a name. */ + print_utf8_string(pp, "procedure:", 0, 10); + name = ((Scheme_Structure *)obj)->slots[2]; + } else { + name = SCHEME_STRUCT_NAME_SYM(obj); + } + + s = scheme_symbol_name_and_size(name, (unsigned int *)&l, + (pp->print_struct + ? SCHEME_SNF_FOR_TS + : (pp->can_read_pipe_quote + ? SCHEME_SNF_PIPE_QUOTE + : SCHEME_SNF_NO_PIPE_QUOTE))); + print_utf8_string(pp, s, 0, l); PRINTADDRESS(pp, obj); print_utf8_string(pp, ">", 0, 1); } else { diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index c08c0bf47e..5f08fc194b 100644 --- a/src/mzscheme/src/schminc.h +++ b/src/mzscheme/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 944 +#define EXPECTED_PRIM_COUNT 945 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 6b859d4f99..c5a40ac424 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "4.1.3.7" +#define MZSCHEME_VERSION "4.1.3.8" #define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 3 -#define MZSCHEME_VERSION_W 7 +#define MZSCHEME_VERSION_W 8 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)