Merged changes from trunk.
svn: r18007
This commit is contained in:
commit
fe40d3e888
|
@ -1,20 +0,0 @@
|
||||||
#lang scheme/gui
|
|
||||||
|
|
||||||
(require 2htdp/universe)
|
|
||||||
(require 2htdp/image)
|
|
||||||
|
|
||||||
(define s "")
|
|
||||||
(define x 1)
|
|
||||||
|
|
||||||
(big-bang 1
|
|
||||||
(on-tick (lambda (w)
|
|
||||||
(begin
|
|
||||||
(set! x (+ x 1))
|
|
||||||
(if (= x 3) 0 1))))
|
|
||||||
(stop-when zero?)
|
|
||||||
(on-draw (lambda (w)
|
|
||||||
(begin
|
|
||||||
(set! s (string-append "-" s))
|
|
||||||
(rectangle 1 1 'solid 'green)))))
|
|
||||||
|
|
||||||
(unless (string=? s "---") (error 'world-update-test "failed! ~s" s))
|
|
|
@ -153,7 +153,7 @@
|
||||||
(choice-res-errors result))
|
(choice-res-errors result))
|
||||||
(fail-type->message (choice-res-errors result))
|
(fail-type->message (choice-res-errors result))
|
||||||
(make-err
|
(make-err
|
||||||
(format "Found additional content after ~a, begining with '~a'."
|
(format "Found additional content after ~a, beginning with '~a'."
|
||||||
(res-msg (car used-sort))
|
(res-msg (car used-sort))
|
||||||
(input->output-name (car (res-rest (car used-sort)))))
|
(input->output-name (car (res-rest (car used-sort)))))
|
||||||
(and src?
|
(and src?
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
[(and (repeat-res? result) (fail-type? (repeat-res-stop result)))
|
[(and (repeat-res? result) (fail-type? (repeat-res-stop result)))
|
||||||
;(printf "repeat-fail~n")
|
;(printf "repeat-fail~n")
|
||||||
(fail-type->message (repeat-res-stop result))]
|
(fail-type->message (repeat-res-stop result))]
|
||||||
[else (error 'parser (format "Internal error: recieved unexpected input ~a"
|
[else (error 'parser (format "Internal error: received unexpected input ~a"
|
||||||
result))])])
|
result))])])
|
||||||
(cond
|
(cond
|
||||||
[(err? out)
|
[(err? out)
|
||||||
|
|
|
@ -288,7 +288,7 @@
|
||||||
[(null? (cdr l)) (string-append "or " (car l))]
|
[(null? (cdr l)) (string-append "or " (car l))]
|
||||||
[else (string-append (car l) ", " (formatter (cdr l)))]))])
|
[else (string-append (car l) ", " (formatter (cdr l)))]))])
|
||||||
(cond
|
(cond
|
||||||
[(null? l) (error 'internal-error "nice-list in combinator-parser/errors.scm recieved null list")]
|
[(null? l) (error 'internal-error "nice-list in combinator-parser/errors.scm received null list")]
|
||||||
[(null? (cdr l)) (car l)]
|
[(null? (cdr l)) (car l)]
|
||||||
[(null? (cddr l)) (string-append (car l) " or " (cadr l))]
|
[(null? (cddr l)) (string-append (car l) " or " (cadr l))]
|
||||||
[else (formatter l)])))
|
[else (formatter l)])))
|
||||||
|
|
|
@ -3272,7 +3272,7 @@
|
||||||
(define (convert-function-calls e vars &-vars c++-class live-vars complain-not-in memcpy? braces-are-aggregates?)
|
(define (convert-function-calls e vars &-vars c++-class live-vars complain-not-in memcpy? braces-are-aggregates?)
|
||||||
;; e is a single statement
|
;; e is a single statement
|
||||||
;; Reverse to calculate live vars as we go.
|
;; Reverse to calculate live vars as we go.
|
||||||
;; Also, it's easier to look for parens and then inspect preceeding
|
;; Also, it's easier to look for parens and then inspect preceding
|
||||||
;; to find function calls.
|
;; to find function calls.
|
||||||
;; complain-not-in is ither #f [function calls are ok], a string [not ok, string describes way],
|
;; complain-not-in is ither #f [function calls are ok], a string [not ok, string describes way],
|
||||||
;; or (list ok-exprs ...)) [in a rator position, only ok-expr calls are allowed,
|
;; or (list ok-exprs ...)) [in a rator position, only ok-expr calls are allowed,
|
||||||
|
@ -3608,7 +3608,7 @@
|
||||||
(not (null? (cdr assignee)))
|
(not (null? (cdr assignee)))
|
||||||
;; ok if name starts with "_stk_"
|
;; ok if name starts with "_stk_"
|
||||||
(not (regexp-match re:_stk_ (symbol->string (tok-n (car assignee)))))
|
(not (regexp-match re:_stk_ (symbol->string (tok-n (car assignee)))))
|
||||||
;; ok if preceeding is else or label terminator
|
;; ok if preceding is else or label terminator
|
||||||
(not (memq (tok-n (cadr assignee)) '(else |:|)))
|
(not (memq (tok-n (cadr assignee)) '(else |:|)))
|
||||||
;; assignment to field in record is ok
|
;; assignment to field in record is ok
|
||||||
(not (and (eq? (tok-n (cadr assignee)) '|.|)
|
(not (and (eq? (tok-n (cadr assignee)) '|.|)
|
||||||
|
@ -3617,7 +3617,7 @@
|
||||||
(null? (cdddr assignee))))
|
(null? (cdddr assignee))))
|
||||||
;; ok if preceded by XFORM_OK_ASSIGN
|
;; ok if preceded by XFORM_OK_ASSIGN
|
||||||
(not (eq? (tok-n (cadr assignee)) 'XFORM_OK_ASSIGN))
|
(not (eq? (tok-n (cadr assignee)) 'XFORM_OK_ASSIGN))
|
||||||
;; ok if preceeding is `if', `until', etc.
|
;; ok if preceding is `if', `until', etc.
|
||||||
(not (and (parens? (cadr assignee))
|
(not (and (parens? (cadr assignee))
|
||||||
(pair? (cddr assignee))
|
(pair? (cddr assignee))
|
||||||
(memq (tok-n (caddr assignee)) '(if while for until))))))
|
(memq (tok-n (caddr assignee)) '(if while for until))))))
|
||||||
|
|
|
@ -236,7 +236,7 @@ Returns the class of an object (or the meta-class of a class).}
|
||||||
boolean?]{
|
boolean?]{
|
||||||
|
|
||||||
Adds a method to a class. The @scheme[type] argument must be a FFI C
|
Adds a method to a class. The @scheme[type] argument must be a FFI C
|
||||||
type (@seeCtype) that matches both @scheme[imp] and and the not
|
type (@seeCtype) that matches both @scheme[imp] and the not
|
||||||
Objective-C type string @scheme[type-encoding].}
|
Objective-C type string @scheme[type-encoding].}
|
||||||
|
|
||||||
@defproc[(class_addIvar [cls _Class] [name string?] [size exact-nonnegative-integer?]
|
@defproc[(class_addIvar [cls _Class] [name string?] [size exact-nonnegative-integer?]
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
(error '_sndfile "got a NULL pointer (bad info?)")))))
|
(error '_sndfile "got a NULL pointer (bad info?)")))))
|
||||||
|
|
||||||
;; sf_count_t is a count type that depends on the operating system however it
|
;; sf_count_t is a count type that depends on the operating system however it
|
||||||
;; seems to be a long int for all teh supported ones so in this scase we just
|
;; seems to be a long int for all the supported ones so in this scase we just
|
||||||
;; define it as two ints.
|
;; define it as two ints.
|
||||||
(define _sf-count-t _int64)
|
(define _sf-count-t _int64)
|
||||||
|
|
||||||
|
|
|
@ -543,7 +543,7 @@
|
||||||
;; this flag is specific to this frame
|
;; this flag is specific to this frame
|
||||||
;; the true state of the info panel is
|
;; the true state of the info panel is
|
||||||
;; the combination of this flag and the
|
;; the combination of this flag and the
|
||||||
;; the 'framework:show-status-line preference
|
;; 'framework:show-status-line preference
|
||||||
;; as shown in update-info-visibility
|
;; as shown in update-info-visibility
|
||||||
(define info-hidden? #f)
|
(define info-hidden? #f)
|
||||||
(define/public (hide-info)
|
(define/public (hide-info)
|
||||||
|
|
|
@ -316,7 +316,7 @@ careful charlie
|
||||||
[(eq? their-loc 'start)
|
[(eq? their-loc 'start)
|
||||||
(let ([their-enter-spot (get-enter-pos (pawn-color pawn))])
|
(let ([their-enter-spot (get-enter-pos (pawn-color pawn))])
|
||||||
;; this code assumes that the enter-pos's are not within 6 of
|
;; this code assumes that the enter-pos's are not within 6 of
|
||||||
;; where the board indicies wrap around.
|
;; where the board indices wrap around.
|
||||||
(cond
|
(cond
|
||||||
[(= my-loc their-enter-spot)
|
[(= my-loc their-enter-spot)
|
||||||
(add-single-roll-chances 5)
|
(add-single-roll-chances 5)
|
||||||
|
|
|
@ -252,10 +252,10 @@
|
||||||
(define/private (draw-cell draw-i draw-j)
|
(define/private (draw-cell draw-i draw-j)
|
||||||
(let-values ([(xd yd wd hd) (ij->xywh draw-i draw-j)])
|
(let-values ([(xd yd wd hd) (ij->xywh draw-i draw-j)])
|
||||||
(let* ([dc (get-dc)]
|
(let* ([dc (get-dc)]
|
||||||
[indicies (board-ref board draw-i draw-j)])
|
[indices (board-ref board draw-i draw-j)])
|
||||||
(if indicies
|
(if indices
|
||||||
(let ([bm-i (loc-x indicies)]
|
(let ([bm-i (loc-x indices)]
|
||||||
[bm-j (loc-y indicies)])
|
[bm-j (loc-y indices)])
|
||||||
(let-values ([(xs ys ws hs) (ij->xywh bm-i bm-j)])
|
(let-values ([(xs ys ws hs) (ij->xywh bm-i bm-j)])
|
||||||
(send dc set-pen pict-pen)
|
(send dc set-pen pict-pen)
|
||||||
(send dc set-brush pict-brush)
|
(send dc set-brush pict-brush)
|
||||||
|
|
|
@ -152,7 +152,7 @@ Keywords for configuring @scheme[check:]:
|
||||||
@item{@indexed-scheme[:student-line]---when a submission is converted
|
@item{@indexed-scheme[:student-line]---when a submission is converted
|
||||||
to text, it begins with lines describing the students that have
|
to text, it begins with lines describing the students that have
|
||||||
submitted it; this is used to specify the format of these lines. It
|
submitted it; this is used to specify the format of these lines. It
|
||||||
is a string with holes that that @scheme[user-substs] fills out.
|
is a string with holes that @scheme[user-substs] fills out.
|
||||||
The default is @scheme["Student: {username} ({Full Name} <{Email}>)"],
|
The default is @scheme["Student: {username} ({Full Name} <{Email}>)"],
|
||||||
which requires @scheme["Full Name"] and @scheme["Email"] entries in
|
which requires @scheme["Full Name"] and @scheme["Email"] entries in
|
||||||
the server's extra-fields configuration. These lines are prefixed
|
the server's extra-fields configuration. These lines are prefixed
|
||||||
|
|
|
@ -190,7 +190,7 @@
|
||||||
|
|
||||||
(provide tree-filter)
|
(provide tree-filter)
|
||||||
;; (string -> any) tree -> tree
|
;; (string -> any) tree -> tree
|
||||||
;; If the filter returns '+ or '- this qualifies or disqualifies the the
|
;; If the filter returns '+ or '- this qualifies or disqualifies the
|
||||||
;; current tree immediately, otherwise recurse down directories. If any other
|
;; current tree immediately, otherwise recurse down directories. If any other
|
||||||
;; result is returned for directories scanning continues, and for files they
|
;; result is returned for directories scanning continues, and for files they
|
||||||
;; are included if the result is not #f.
|
;; are included if the result is not #f.
|
||||||
|
|
|
@ -1519,7 +1519,7 @@
|
||||||
(if (and gsnip
|
(if (and gsnip
|
||||||
(has-flag? (snip->flags gsnip) HARD-NEWLINE)
|
(has-flag? (snip->flags gsnip) HARD-NEWLINE)
|
||||||
(eq? (snip->next gsnip) snip))
|
(eq? (snip->next gsnip) snip))
|
||||||
;; preceeding snip was a newline, so the new slip belongs on the next line:
|
;; preceding snip was a newline, so the new slip belongs on the next line:
|
||||||
(let* ([oldline (snip->line gsnip)]
|
(let* ([oldline (snip->line gsnip)]
|
||||||
[inserted-new-line?
|
[inserted-new-line?
|
||||||
(if (mline-next oldline)
|
(if (mline-next oldline)
|
||||||
|
@ -4188,7 +4188,7 @@
|
||||||
(has-flag? (snip->flags gsnip) NEWLINE)
|
(has-flag? (snip->flags gsnip) NEWLINE)
|
||||||
(not (has-flag? (snip->flags gsnip) HARD-NEWLINE)))
|
(not (has-flag? (snip->flags gsnip) HARD-NEWLINE)))
|
||||||
(begin
|
(begin
|
||||||
;; we want the snip on the same line as the preceeding snip:
|
;; we want the snip on the same line as the preceding snip:
|
||||||
(if (snip->next gsnip)
|
(if (snip->next gsnip)
|
||||||
(insert-snip (snip->next gsnip) snip)
|
(insert-snip (snip->next gsnip) snip)
|
||||||
(append-snip snip))
|
(append-snip snip))
|
||||||
|
|
|
@ -9,7 +9,7 @@ work right.
|
||||||
Most of the exports are just for use in 2htdp/image
|
Most of the exports are just for use in 2htdp/image
|
||||||
(technically, 2htdp/private/image-more). The main
|
(technically, 2htdp/private/image-more). The main
|
||||||
use of this library is the snip class addition it
|
use of this library is the snip class addition it
|
||||||
does (and any code that that does not depend on
|
does (and any code that does not depend on
|
||||||
has been moved out).
|
has been moved out).
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
(super-new)
|
(super-new)
|
||||||
(set-snipclass matrix-snip-class)))
|
(set-snipclass matrix-snip-class)))
|
||||||
|
|
||||||
;; the snip class for matricies
|
;; the snip class for matrices
|
||||||
(define matrix-snip-class%
|
(define matrix-snip-class%
|
||||||
(class cache-image-snip-class%
|
(class cache-image-snip-class%
|
||||||
(super-new)
|
(super-new)
|
||||||
|
|
|
@ -348,7 +348,7 @@
|
||||||
(with-syntax ([(dom-x ...) (generate-temporaries (syntax (dom ...)))]
|
(with-syntax ([(dom-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-length dom-index ...) (generate-indicies (syntax (dom ...)))]
|
[(dom-length dom-index ...) (generate-indices (syntax (dom ...)))]
|
||||||
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(arg-x ...) (generate-temporaries (syntax (dom ...)))])
|
[(arg-x ...) (generate-temporaries (syntax (dom ...)))])
|
||||||
(with-syntax ([(name-dom-contract-x ...)
|
(with-syntax ([(name-dom-contract-x ...)
|
||||||
|
@ -391,7 +391,7 @@
|
||||||
(with-syntax ([(rng-x ...) (generate-temporaries (syntax (rng ...)))]
|
(with-syntax ([(rng-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-contract-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-contract-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-projection-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-projection-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-length rng-index ...) (generate-indicies (syntax (rng ...)))]
|
[(rng-length rng-index ...) (generate-indices (syntax (rng ...)))]
|
||||||
[(rng-ant-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-ant-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(res-x ...) (generate-temporaries (syntax (rng ...)))])
|
[(res-x ...) (generate-temporaries (syntax (rng ...)))])
|
||||||
(values
|
(values
|
||||||
|
@ -491,7 +491,7 @@
|
||||||
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(arg-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(arg-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-length dom-index ...) (generate-indicies (syntax (dom ...)))]
|
[(dom-length dom-index ...) (generate-indices (syntax (dom ...)))]
|
||||||
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[dom-rest-x (car (generate-temporaries (list (syntax rest))))]
|
[dom-rest-x (car (generate-temporaries (list (syntax rest))))]
|
||||||
[dom-rest-contract-x (car (generate-temporaries (list (syntax rest))))]
|
[dom-rest-contract-x (car (generate-temporaries (list (syntax rest))))]
|
||||||
|
@ -501,7 +501,7 @@
|
||||||
[(rng-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-contract-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-contract-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-projection-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-projection-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(rng-length rng-index ...) (generate-indicies (syntax (rng ...)))]
|
[(rng-length rng-index ...) (generate-indices (syntax (rng ...)))]
|
||||||
[(rng-ant-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(rng-ant-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[(res-x ...) (generate-temporaries (syntax (rng ...)))]
|
[(res-x ...) (generate-temporaries (syntax (rng ...)))]
|
||||||
[arity (length (syntax->list (syntax (dom ...))))])
|
[arity (length (syntax->list (syntax (dom ...))))])
|
||||||
|
@ -564,7 +564,7 @@
|
||||||
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(arg-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(arg-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-length dom-index ...) (generate-indicies (syntax (dom ...)))]
|
[(dom-length dom-index ...) (generate-indices (syntax (dom ...)))]
|
||||||
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[dom-rest-x (car (generate-temporaries (list (syntax rest))))]
|
[dom-rest-x (car (generate-temporaries (list (syntax rest))))]
|
||||||
[dom-rest-contract-x (car (generate-temporaries (list (syntax rest))))]
|
[dom-rest-contract-x (car (generate-temporaries (list (syntax rest))))]
|
||||||
|
@ -682,7 +682,7 @@
|
||||||
(with-syntax ([(dom-x ...) (generate-temporaries (syntax (dom ...)))]
|
(with-syntax ([(dom-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-contract-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-projection-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(dom-length dom-index ...) (generate-indicies (syntax (dom ...)))]
|
[(dom-length dom-index ...) (generate-indices (syntax (dom ...)))]
|
||||||
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
[(dom-ant-x ...) (generate-temporaries (syntax (dom ...)))]
|
||||||
[(arg-x ...) (generate-temporaries (syntax (dom ...)))])
|
[(arg-x ...) (generate-temporaries (syntax (dom ...)))])
|
||||||
(values
|
(values
|
||||||
|
@ -1099,10 +1099,10 @@
|
||||||
(syntax (let ([name rhs]) name)))]
|
(syntax (let ([name rhs]) name)))]
|
||||||
[else to-be-named])))
|
[else to-be-named])))
|
||||||
|
|
||||||
;; generate-indicies : syntax[list] -> (cons number (listof number))
|
;; generate-indices : syntax[list] -> (cons number (listof number))
|
||||||
;; given a syntax list of length `n', returns a list containing
|
;; given a syntax list of length `n', returns a list containing
|
||||||
;; the number n followed by th numbers from 0 to n-1
|
;; the number n followed by th numbers from 0 to n-1
|
||||||
(define (generate-indicies stx)
|
(define (generate-indices stx)
|
||||||
(let ([n (length (syntax->list stx))])
|
(let ([n (length (syntax->list stx))])
|
||||||
(cons n
|
(cons n
|
||||||
(let loop ([i n])
|
(let loop ([i n])
|
||||||
|
|
|
@ -469,7 +469,7 @@ c_plcont(PLFLT **f, PLINT nx, PLINT ny, PLINT kx, PLINT lx,
|
||||||
* The subrange of indices used for contouring is kx to lx in the x
|
* The subrange of indices used for contouring is kx to lx in the x
|
||||||
* direction and from ky to ly in the y direction. The array of contour
|
* direction and from ky to ly in the y direction. The array of contour
|
||||||
* levels is clevel(nlevel), and "pltr" is the name of a function which
|
* levels is clevel(nlevel), and "pltr" is the name of a function which
|
||||||
* transforms array indicies into world coordinates.
|
* transforms array indices into world coordinates.
|
||||||
*
|
*
|
||||||
* Note that the fortran-like minimum and maximum indices (kx, lx, ky, ly)
|
* Note that the fortran-like minimum and maximum indices (kx, lx, ky, ly)
|
||||||
* are translated into more C-like ones. I've only kept them as they are
|
* are translated into more C-like ones. I've only kept them as they are
|
||||||
|
|
|
@ -216,7 +216,7 @@ a version as a sequence of exact, non-negative integers. Roughly, such
|
||||||
a name is converted to a PLT Scheme module pathname (see @secref[#:doc
|
a name is converted to a PLT Scheme module pathname (see @secref[#:doc
|
||||||
guide-src "module-paths"]) by concatenating the symbols with a
|
guide-src "module-paths"]) by concatenating the symbols with a
|
||||||
@litchar{/} separator, and then appending the version integers each
|
@litchar{/} separator, and then appending the version integers each
|
||||||
with a preceeding @litchar{-}. As a special case, when an @|r6rs| path
|
with a preceding @litchar{-}. As a special case, when an @|r6rs| path
|
||||||
contains a single symbol (optionally followed by a version), a
|
contains a single symbol (optionally followed by a version), a
|
||||||
@schemeidfont{main} symbol is effectively inserted after the initial
|
@schemeidfont{main} symbol is effectively inserted after the initial
|
||||||
symbol. See below for further encoding considerations.
|
symbol. See below for further encoding considerations.
|
||||||
|
|
|
@ -191,7 +191,7 @@
|
||||||
(bytes-set! tgt left LF)
|
(bytes-set! tgt left LF)
|
||||||
(set! buffer #f)
|
(set! buffer #f)
|
||||||
(add1 left)]))])))
|
(add1 left)]))])))
|
||||||
(make-input-port 'readline reader #f close!)))
|
(make-input-port 'readline-input reader #f close!)))
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
;; --------------------------------------------------------------------------
|
||||||
;; Reading functions
|
;; Reading functions
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
;; and a 'where' in the second clause
|
;; and a 'where' in the second clause
|
||||||
(test (render-metafunction T) "metafunction-T.png")
|
(test (render-metafunction T) "metafunction-T.png")
|
||||||
|
|
||||||
;; in this test, teh `x' is italic and the 'z' is sf, since 'x' is in the grammar, and 'z' is not.
|
;; in this test, the `x' is italic and the 'z' is sf, since 'x' is in the grammar, and 'z' is not.
|
||||||
(test (render-lw
|
(test (render-lw
|
||||||
lang
|
lang
|
||||||
(to-lw ((λ (x) (x x))
|
(to-lw ((λ (x) (x x))
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#lang scheme/base (provide stamp) (define stamp "4feb2010")
|
#lang scheme/base (provide stamp) (define stamp "6feb2010")
|
||||||
|
|
|
@ -76,8 +76,8 @@ it around flattened out.
|
||||||
[struct-maker struct-maker/val]
|
[struct-maker struct-maker/val]
|
||||||
[predicate predicate/val]
|
[predicate predicate/val]
|
||||||
[the-contract (add-suffix "-contract")]
|
[the-contract (add-suffix "-contract")]
|
||||||
[(selector-indicies ...) (nums-up-to field-count/val)]
|
[(selector-indices ...) (nums-up-to field-count/val)]
|
||||||
[(selector-indicies+1 ...) (map add1 (nums-up-to field-count/val))]
|
[(selector-indices+1 ...) (map add1 (nums-up-to field-count/val))]
|
||||||
[(ctc-x ...) (generate-temporaries (syntax (fields ...)))]
|
[(ctc-x ...) (generate-temporaries (syntax (fields ...)))]
|
||||||
[(f-x ...) f-x/vals]
|
[(f-x ...) f-x/vals]
|
||||||
[((f-xs ...) ...) f-xs/vals]
|
[((f-xs ...) ...) f-xs/vals]
|
||||||
|
@ -113,7 +113,7 @@ it around flattened out.
|
||||||
(lambda (k v)
|
(lambda (k v)
|
||||||
(when (unknown? v)
|
(when (unknown? v)
|
||||||
(let ([proc (unknown-proc v)])
|
(let ([proc (unknown-proc v)])
|
||||||
(let ([new (proc (wrap-get stct selector-indicies+1) ...)])
|
(let ([new (proc (wrap-get stct selector-indices+1) ...)])
|
||||||
(cond
|
(cond
|
||||||
[(unknown? new)
|
[(unknown? new)
|
||||||
(set! any-unknown? #t)]
|
(set! any-unknown? #t)]
|
||||||
|
@ -177,7 +177,7 @@ it around flattened out.
|
||||||
(cond
|
(cond
|
||||||
[(raw-predicate stct)
|
[(raw-predicate stct)
|
||||||
;; found the original value
|
;; found the original value
|
||||||
(values #f (get stct selector-indicies) ...)]
|
(values #f (get stct selector-indices) ...)]
|
||||||
|
|
||||||
[(opt-wrap-predicate stct)
|
[(opt-wrap-predicate stct)
|
||||||
(let ((inner (opt-wrap-get stct 0)))
|
(let ((inner (opt-wrap-get stct 0)))
|
||||||
|
@ -187,11 +187,11 @@ it around flattened out.
|
||||||
(let-values ([(inner-stct fields ...) (loop inner)])
|
(let-values ([(inner-stct fields ...) (loop inner)])
|
||||||
(let-values ([(fields ...) (enforcer stct fields ...)])
|
(let-values ([(fields ...) (enforcer stct fields ...)])
|
||||||
(opt-wrap-set stct 0 #f)
|
(opt-wrap-set stct 0 #f)
|
||||||
(opt-wrap-set stct selector-indicies+1 fields) ...
|
(opt-wrap-set stct selector-indices+1 fields) ...
|
||||||
(values stct fields ...))))
|
(values stct fields ...))))
|
||||||
|
|
||||||
;; found a cached version
|
;; found a cached version
|
||||||
(values #f (opt-wrap-get stct selector-indicies+1) ...)))]
|
(values #f (opt-wrap-get stct selector-indices+1) ...)))]
|
||||||
[(wrap-predicate stct)
|
[(wrap-predicate stct)
|
||||||
(let ([inner (wrap-get stct 0)])
|
(let ([inner (wrap-get stct 0)])
|
||||||
(if inner
|
(if inner
|
||||||
|
@ -201,19 +201,19 @@ it around flattened out.
|
||||||
(let-values ([(fields ...)
|
(let-values ([(fields ...)
|
||||||
(rewrite-fields stct contract/info fields ...)])
|
(rewrite-fields stct contract/info fields ...)])
|
||||||
(wrap-set stct 0 #f)
|
(wrap-set stct 0 #f)
|
||||||
(wrap-set stct selector-indicies+1 fields) ...
|
(wrap-set stct selector-indices+1 fields) ...
|
||||||
(evaluate-attrs stct contract/info)
|
(evaluate-attrs stct contract/info)
|
||||||
(values stct fields ...))))
|
(values stct fields ...))))
|
||||||
|
|
||||||
;; found a cached version of the value
|
;; found a cached version of the value
|
||||||
(values #f (wrap-get stct selector-indicies+1) ...)))]))])
|
(values #f (wrap-get stct selector-indices+1) ...)))]))])
|
||||||
(cond
|
(cond
|
||||||
[(opt-wrap-predicate stct) (opt-wrap-get stct i+1)]
|
[(opt-wrap-predicate stct) (opt-wrap-get stct i+1)]
|
||||||
[(wrap-predicate stct) (wrap-get stct i+1)])))
|
[(wrap-predicate stct) (wrap-get stct i+1)])))
|
||||||
|
|
||||||
(define (rewrite-fields parent contract/info ctc-x ...)
|
(define (rewrite-fields parent contract/info ctc-x ...)
|
||||||
(let* ([f-x (let* ([ctc-field (contract-get (contract/info-contract contract/info)
|
(let* ([f-x (let* ([ctc-field (contract-get (contract/info-contract contract/info)
|
||||||
selector-indicies)]
|
selector-indices)]
|
||||||
[ctc (if (contract-struct? ctc-field)
|
[ctc (if (contract-struct? ctc-field)
|
||||||
ctc-field
|
ctc-field
|
||||||
(ctc-field f-xs ...))]
|
(ctc-field f-xs ...))]
|
||||||
|
@ -229,8 +229,8 @@ it around flattened out.
|
||||||
(define (stronger-lazy-contract? a b)
|
(define (stronger-lazy-contract? a b)
|
||||||
(and (contract-predicate b)
|
(and (contract-predicate b)
|
||||||
(contract-stronger?
|
(contract-stronger?
|
||||||
(contract-get a selector-indicies)
|
(contract-get a selector-indices)
|
||||||
(contract-get b selector-indicies)) ...))
|
(contract-get b selector-indices)) ...))
|
||||||
|
|
||||||
(define (lazy-contract-proj ctc)
|
(define (lazy-contract-proj ctc)
|
||||||
(λ (blame)
|
(λ (blame)
|
||||||
|
@ -279,7 +279,7 @@ it around flattened out.
|
||||||
(contract-maker ctc-x ... #f)))
|
(contract-maker ctc-x ... #f)))
|
||||||
|
|
||||||
(define (selectors x)
|
(define (selectors x)
|
||||||
(burrow-in x 'selectors selector-indicies))
|
(burrow-in x 'selectors selector-indices))
|
||||||
...
|
...
|
||||||
|
|
||||||
(define (burrow-in struct selector-name i)
|
(define (burrow-in struct selector-name i)
|
||||||
|
@ -300,7 +300,7 @@ it around flattened out.
|
||||||
(define (lazy-contract-name ctc)
|
(define (lazy-contract-name ctc)
|
||||||
(do-contract-name 'struct/c
|
(do-contract-name 'struct/c
|
||||||
'struct/dc
|
'struct/dc
|
||||||
(list (contract-get ctc selector-indicies) ...)
|
(list (contract-get ctc selector-indices) ...)
|
||||||
'(fields ...)
|
'(fields ...)
|
||||||
(contract-get ctc field-count)))
|
(contract-get ctc field-count)))
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ it around flattened out.
|
||||||
#f
|
#f
|
||||||
(+ field-count 1) ;; extra field is for synthesized attribute ctcs
|
(+ field-count 1) ;; extra field is for synthesized attribute ctcs
|
||||||
;; it is a list whose first element is
|
;; it is a list whose first element is
|
||||||
;; a procedure (called once teh attrs are known) that
|
;; a procedure (called once the attrs are known) that
|
||||||
;; indicates if the test passes. the rest of the elements are
|
;; indicates if the test passes. the rest of the elements are
|
||||||
;; procedures that build the attrs
|
;; procedures that build the attrs
|
||||||
;; this field is #f when there is no synthesized attrs
|
;; this field is #f when there is no synthesized attrs
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
scheme/control
|
scheme/control
|
||||||
scheme/stxparam scheme/splicing)
|
scheme/stxparam scheme/splicing)
|
||||||
|
|
||||||
(provide yield generator in-generator infinite-generator
|
(provide yield generator generator-state in-generator infinite-generator
|
||||||
sequence->generator sequence->repeated-generator)
|
sequence->generator sequence->repeated-generator)
|
||||||
|
|
||||||
;; (define-syntax-parameter yield
|
;; (define-syntax-parameter yield
|
||||||
|
@ -44,25 +44,56 @@
|
||||||
(lambda (v)
|
(lambda (v)
|
||||||
(error 'yield "must be called in the context of a generator"))))
|
(error 'yield "must be called in the context of a generator"))))
|
||||||
|
|
||||||
(define (yield value)
|
(define yield
|
||||||
((current-yielder) value))
|
(case-lambda [() ((current-yielder))]
|
||||||
|
[(v) ((current-yielder) v)]
|
||||||
|
[vs (apply (current-yielder) vs)]))
|
||||||
|
|
||||||
(define yield-tag (make-continuation-prompt-tag))
|
(define yield-tag (make-continuation-prompt-tag))
|
||||||
|
|
||||||
(define-syntax-rule (generator body0 body ...)
|
(define-syntax-rule (generator body0 body ...)
|
||||||
(let ()
|
(let ([state 'fresh])
|
||||||
(define (cont)
|
(define (cont)
|
||||||
(define (yielder value)
|
(define (yielder . vs)
|
||||||
(shift-at yield-tag k (set! cont k) value))
|
(set! state 'suspended)
|
||||||
|
(shift-at yield-tag k (set! cont k) (apply values vs)))
|
||||||
|
(set! state 'running)
|
||||||
(reset-at yield-tag
|
(reset-at yield-tag
|
||||||
(parameterize ([current-yielder yielder])
|
(parameterize ([current-yielder yielder])
|
||||||
(let ([retval (begin body0 body ...)])
|
(call-with-values
|
||||||
;; normal return:
|
(lambda () (begin body0 body ...))
|
||||||
(set! cont (lambda () retval))
|
;; get here only on at the end of the generator
|
||||||
retval))))
|
(lambda rs
|
||||||
(define (generator) (cont))
|
(set! cont (lambda () (set! state 'done) (apply values rs)))
|
||||||
|
(cont))))))
|
||||||
|
(define (err [what "send a value to"])
|
||||||
|
(error 'generator "cannot ~a a ~a generator" what state))
|
||||||
|
(define generator
|
||||||
|
(case-lambda
|
||||||
|
[() (if (eq? state 'running)
|
||||||
|
(err "call")
|
||||||
|
(begin (set! state 'running) (cont)))]
|
||||||
|
;; yield-tag means return the state (see `generator-state' below)
|
||||||
|
[(x) (cond [(eq? x yield-tag) state]
|
||||||
|
[(memq state '(suspended running))
|
||||||
|
(set! state 'running)
|
||||||
|
(cont x)]
|
||||||
|
[else (err)])]
|
||||||
|
[xs (if (memq state '(suspended running))
|
||||||
|
(begin (set! state 'running) (apply cont xs))
|
||||||
|
(err))]))
|
||||||
generator))
|
generator))
|
||||||
|
|
||||||
|
;; Get the state -- this is a hack: uses yield-tag as a hidden value that makes
|
||||||
|
;; the generator return its state. Protect against grabbing this tag (eg, with
|
||||||
|
;; (generator-state values)) by inspecting the result (so it can still be
|
||||||
|
;; deceived, but that will be harmless).
|
||||||
|
(define (generator-state g)
|
||||||
|
(let ([s (and (procedure? g) (procedure-arity-includes? g 1) (g yield-tag))])
|
||||||
|
(if (memq s '(fresh running suspended done))
|
||||||
|
s
|
||||||
|
(raise-type-error 'generator-state "generator" g))))
|
||||||
|
|
||||||
(define-syntax-rule (infinite-generator body0 body ...)
|
(define-syntax-rule (infinite-generator body0 body ...)
|
||||||
(generator (let loop () body0 body ... (loop))))
|
(generator (let loop () body0 body ... (loop))))
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
(provide split-rows)
|
(provide split-rows)
|
||||||
|
|
||||||
;; split-rows : Listof[Row] -> Listof[Listof[Row]]
|
;; split-rows : Listof[Row] -> Listof[Listof[Row]]
|
||||||
;; takes a matrix, and returns a list of matricies
|
;; takes a matrix, and returns a list of matrices
|
||||||
;; each returned matrix does not require the mixture rule to do compilation of
|
;; each returned matrix does not require the mixture rule to do compilation of
|
||||||
;; the first column.
|
;; the first column.
|
||||||
(define (split-rows rows [acc null])
|
(define (split-rows rows [acc null])
|
||||||
|
|
|
@ -24,16 +24,16 @@ doing these checks.
|
||||||
|
|
||||||
|#
|
|#
|
||||||
|
|
||||||
;; This code works with unsafe operations, but don't use it for a while to
|
;; This code works with unsafe operations, if there are problems, the commented
|
||||||
;; catch potential problems.
|
;; chunk of code below can be used to run it in safe mode.
|
||||||
;; (#%require (rename '#%unsafe i+ unsafe-fx+)
|
(#%require (rename '#%unsafe i+ unsafe-fx+)
|
||||||
;; (rename '#%unsafe i- unsafe-fx-)
|
(rename '#%unsafe i- unsafe-fx-)
|
||||||
;; (rename '#%unsafe i= unsafe-fx=)
|
(rename '#%unsafe i= unsafe-fx=)
|
||||||
;; (rename '#%unsafe i< unsafe-fx<)
|
(rename '#%unsafe i< unsafe-fx<)
|
||||||
;; (rename '#%unsafe i<= unsafe-fx<=)
|
(rename '#%unsafe i<= unsafe-fx<=)
|
||||||
;; (rename '#%unsafe i>> unsafe-fxrshift)
|
(rename '#%unsafe i>> unsafe-fxrshift)
|
||||||
;; (rename '#%unsafe vref unsafe-vector-ref)
|
(rename '#%unsafe vref unsafe-vector-ref)
|
||||||
;; (rename '#%unsafe vset! unsafe-vector-set!))
|
(rename '#%unsafe vset! unsafe-vector-set!))
|
||||||
|
|
||||||
(define sort (let ()
|
(define sort (let ()
|
||||||
|
|
||||||
|
@ -42,14 +42,15 @@ doing these checks.
|
||||||
[(dr (foo . pattern) template)
|
[(dr (foo . pattern) template)
|
||||||
(define-syntax foo (syntax-rules () [(_ . pattern) template]))]))
|
(define-syntax foo (syntax-rules () [(_ . pattern) template]))]))
|
||||||
|
|
||||||
(define-syntax-rule (i+ x y) (+ x y))
|
;; Use this to make it safe:
|
||||||
(define-syntax-rule (i- x y) (- x y))
|
;; (define-syntax-rule (i+ x y) (+ x y))
|
||||||
(define-syntax-rule (i= x y) (= x y))
|
;; (define-syntax-rule (i- x y) (- x y))
|
||||||
(define-syntax-rule (i< x y) (< x y))
|
;; (define-syntax-rule (i= x y) (= x y))
|
||||||
(define-syntax-rule (i<= x y) (<= x y))
|
;; (define-syntax-rule (i< x y) (< x y))
|
||||||
(define-syntax-rule (i>> x y) (arithmetic-shift x (- y)))
|
;; (define-syntax-rule (i<= x y) (<= x y))
|
||||||
(define-syntax-rule (vref v i) (vector-ref v i))
|
;; (define-syntax-rule (i>> x y) (arithmetic-shift x (- y)))
|
||||||
(define-syntax-rule (vset! v i x) (vector-set! v i x))
|
;; (define-syntax-rule (vref v i) (vector-ref v i))
|
||||||
|
;; (define-syntax-rule (vset! v i x) (vector-set! v i x))
|
||||||
|
|
||||||
(define-syntax-rule (sort-internal-body v *<? n has-getkey? getkey)
|
(define-syntax-rule (sort-internal-body v *<? n has-getkey? getkey)
|
||||||
(let* ([n/2- (i>> n 1)] [n/2+ (i- n n/2-)])
|
(let* ([n/2- (i>> n 1)] [n/2+ (i- n n/2-)])
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
(let ([s (read-bytes drop input-port)])
|
(let ([s (read-bytes drop input-port)])
|
||||||
(when out
|
(when out
|
||||||
(display s out)))
|
(display s out)))
|
||||||
;; Get the matching part, and shift matching indicies
|
;; Get the matching part, and shift matching indices
|
||||||
(let ([s (read-bytes (- (cdar m) drop) input-port)])
|
(let ([s (read-bytes (- (cdar m) drop) input-port)])
|
||||||
(cons s
|
(cons s
|
||||||
(map (lambda (p)
|
(map (lambda (p)
|
||||||
|
|
|
@ -430,8 +430,8 @@
|
||||||
(define (input->port inp)
|
(define (input->port inp)
|
||||||
;; returns #f when it can't create a port
|
;; returns #f when it can't create a port
|
||||||
(cond [(input-port? inp) inp]
|
(cond [(input-port? inp) inp]
|
||||||
[(string? inp) (open-input-string inp)]
|
[(string? inp) (open-input-string inp #f)]
|
||||||
[(bytes? inp) (open-input-bytes inp)]
|
[(bytes? inp) (open-input-bytes inp #f)]
|
||||||
[(path? inp) (open-input-file inp)]
|
[(path? inp) (open-input-file inp)]
|
||||||
[else #f]))
|
[else #f]))
|
||||||
|
|
||||||
|
@ -761,28 +761,22 @@
|
||||||
(cond [(eof-object? r) (terminate+kill! #t #t)]
|
(cond [(eof-object? r) (terminate+kill! #t #t)]
|
||||||
[(eq? (car r) 'exn) (raise (cdr r))]
|
[(eq? (car r) 'exn) (raise (cdr r))]
|
||||||
[else (apply values (cdr r))]))]))
|
[else (apply values (cdr r))]))]))
|
||||||
(define get-uncovered
|
(define (get-uncovered [prog? #t] [src 'program])
|
||||||
(case-lambda
|
|
||||||
[() (get-uncovered #t)]
|
|
||||||
[(prog?) (get-uncovered prog? 'program)]
|
|
||||||
[(prog? src)
|
|
||||||
(unless uncovered
|
(unless uncovered
|
||||||
(error 'get-uncovered-expressions "no coverage information"))
|
(error 'get-uncovered-expressions "no coverage information"))
|
||||||
(let ([uncovered (if prog? (car uncovered) ((cadr uncovered)))])
|
(let ([uncovered (if prog? (car uncovered) ((cadr uncovered)))])
|
||||||
(if src
|
(if src
|
||||||
(filter (lambda (x) (equal? src (syntax-source x))) uncovered)
|
(filter (lambda (x) (equal? src (syntax-source x))) uncovered)
|
||||||
uncovered))]))
|
uncovered)))
|
||||||
(define (output-getter p)
|
(define (output-getter p)
|
||||||
(if (procedure? p) (user-eval (make-evaluator-message 'thunk (list p))) p))
|
(if (procedure? p) (user-eval (make-evaluator-message 'thunk (list p))) p))
|
||||||
(define input-putter
|
(define (input-putter [arg input])
|
||||||
(case-lambda
|
(cond [(not input)
|
||||||
[() (input-putter input)]
|
|
||||||
[(arg) (cond [(not input)
|
|
||||||
(error 'put-input "evaluator input is not 'pipe")]
|
(error 'put-input "evaluator input is not 'pipe")]
|
||||||
[(or (string? arg) (bytes? arg))
|
[(or (string? arg) (bytes? arg))
|
||||||
(display arg input) (flush-output input)]
|
(display arg input) (flush-output input)]
|
||||||
[(eof-object? arg) (close-output-port input)]
|
[(eof-object? arg) (close-output-port input)]
|
||||||
[else (error 'put-input "bad argument: ~e" arg)])]))
|
[else (error 'put-input "bad argument: ~e" arg)]))
|
||||||
(define (evaluator expr)
|
(define (evaluator expr)
|
||||||
(if (evaluator-message? expr)
|
(if (evaluator-message? expr)
|
||||||
(let ([msg (evaluator-message-msg expr)])
|
(let ([msg (evaluator-message-msg expr)])
|
||||||
|
@ -832,8 +826,7 @@
|
||||||
;; set up the IO context
|
;; set up the IO context
|
||||||
[current-input-port
|
[current-input-port
|
||||||
(let ([inp (sandbox-input)])
|
(let ([inp (sandbox-input)])
|
||||||
(cond
|
(cond [(not inp) null-input]
|
||||||
[(not inp) null-input]
|
|
||||||
[(input->port inp) => values]
|
[(input->port inp) => values]
|
||||||
[(and (procedure? inp) (procedure-arity-includes? inp 0)) (inp)]
|
[(and (procedure? inp) (procedure-arity-includes? inp 0)) (inp)]
|
||||||
[(eq? 'pipe inp)
|
[(eq? 'pipe inp)
|
||||||
|
|
|
@ -285,7 +285,7 @@ and thus used as a contract.
|
||||||
|
|
||||||
But many other values also play double duty as contracts.
|
But many other values also play double duty as contracts.
|
||||||
For example, if your function accepts a number or @scheme[#f],
|
For example, if your function accepts a number or @scheme[#f],
|
||||||
@scheme[(or/c number? #f)] sufficies. Similarly, the @scheme[result/c] contract
|
@scheme[(or/c number? #f)] suffices. Similarly, the @scheme[result/c] contract
|
||||||
could have been written with a @scheme[0] in place of @scheme[zero?].
|
could have been written with a @scheme[0] in place of @scheme[zero?].
|
||||||
|
|
||||||
Even better, if you use a regular expression as a contract, the contract
|
Even better, if you use a regular expression as a contract, the contract
|
||||||
|
|
|
@ -470,7 +470,7 @@ form is evaluated:
|
||||||
3]
|
3]
|
||||||
]
|
]
|
||||||
|
|
||||||
The substition and @tech{location}-generation step of procedure
|
The substitution and @tech{location}-generation step of procedure
|
||||||
application requires that the argument is a @tech{value}. Therefore,
|
application requires that the argument is a @tech{value}. Therefore,
|
||||||
in @scheme[((lambda (x) (+ x 10)) (+ 1 2))], the @scheme[(+ 1 2)]
|
in @scheme[((lambda (x) (+ x 10)) (+ 1 2))], the @scheme[(+ 1 2)]
|
||||||
sub-expression must be simplified to the @tech{value} @scheme[3], and
|
sub-expression must be simplified to the @tech{value} @scheme[3], and
|
||||||
|
|
|
@ -111,7 +111,7 @@ types can generate events (see @scheme[prop:evt]).
|
||||||
|
|
||||||
@item{@scheme[_choice] --- an event returned by @scheme[choice-evt] is
|
@item{@scheme[_choice] --- an event returned by @scheme[choice-evt] is
|
||||||
ready when one or more of the @scheme[_evt]s supplied to
|
ready when one or more of the @scheme[_evt]s supplied to
|
||||||
@scheme[chocie-evt] are ready. If the choice event is chosen, one of
|
@scheme[choice-evt] are ready. If the choice event is chosen, one of
|
||||||
its ready @scheme[_evt]s is chosen pseudo-randomly, and the result is
|
its ready @scheme[_evt]s is chosen pseudo-randomly, and the result is
|
||||||
the chosen @scheme[_evt]'s result.}
|
the chosen @scheme[_evt]'s result.}
|
||||||
|
|
||||||
|
|
|
@ -59,8 +59,8 @@ Lrange ::= ^ Lrange contains _^_
|
||||||
| Srange Lrange contains everything in Srange #co
|
| Srange Lrange contains everything in Srange #co
|
||||||
Look ::= (?=Regexp) Match if Regexp matches #mode
|
Look ::= (?=Regexp) Match if Regexp matches #mode
|
||||||
| (?!Regexp) Match if Regexp doesn't match #mode
|
| (?!Regexp) Match if Regexp doesn't match #mode
|
||||||
| (?<=Regexp) Match if Regexp matches preceeding #mode
|
| (?<=Regexp) Match if Regexp matches preceding #mode
|
||||||
| (?<!Regexp) Match if Regexp doesn't match preceeding #mode
|
| (?<!Regexp) Match if Regexp doesn't match preceding #mode
|
||||||
Pred ::= (N) True if Nth _(_ has a match #mode
|
Pred ::= (N) True if Nth _(_ has a match #mode
|
||||||
| Look True if Look matches #mode
|
| Look True if Look matches #mode
|
||||||
Srange ::= ... ... #px
|
Srange ::= ... ... #px
|
||||||
|
|
|
@ -76,7 +76,7 @@ less or equal to @scheme[end] if @scheme[step] is negative.
|
||||||
|
|
||||||
@defproc[(in-naturals [start exact-nonnegative-integer? 0]) sequence?]{
|
@defproc[(in-naturals [start exact-nonnegative-integer? 0]) sequence?]{
|
||||||
Returns an infinite sequence of exact integers starting with
|
Returns an infinite sequence of exact integers starting with
|
||||||
@scheme[start], where each element is one more than the preceeding
|
@scheme[start], where each element is one more than the preceding
|
||||||
element. @speed[in-naturals "integer"]}
|
element. @speed[in-naturals "integer"]}
|
||||||
|
|
||||||
@defproc[(in-list [lst list?]) sequence?]{
|
@defproc[(in-list [lst list?]) sequence?]{
|
||||||
|
|
|
@ -145,13 +145,13 @@ needed to strip lexical and source-location information recursively.}
|
||||||
(list/c any/c
|
(list/c any/c
|
||||||
(or/c exact-positive-integer? #f)
|
(or/c exact-positive-integer? #f)
|
||||||
(or/c exact-nonnegative-integer? #f)
|
(or/c exact-nonnegative-integer? #f)
|
||||||
(or/c exact-nonnegative-integer? #f)
|
(or/c exact-positive-integer? #f)
|
||||||
(or/c exact-positive-integer? #f))
|
(or/c exact-nonnegative-integer? #f))
|
||||||
(vector/c any/c
|
(vector/c any/c
|
||||||
(or/c exact-positive-integer? #f)
|
(or/c exact-positive-integer? #f)
|
||||||
(or/c exact-nonnegative-integer? #f)
|
(or/c exact-nonnegative-integer? #f)
|
||||||
(or/c exact-nonnegative-integer? #f)
|
(or/c exact-positive-integer? #f)
|
||||||
(or/c exact-positive-integer? #f)))
|
(or/c exact-nonnegative-integer? #f)))
|
||||||
#f]
|
#f]
|
||||||
[prop (or/c syntax? #f) #f]
|
[prop (or/c syntax? #f) #f]
|
||||||
[cert (or/c syntax? #f) #f])
|
[cert (or/c syntax? #f) #f])
|
||||||
|
|
|
@ -142,7 +142,7 @@ A syntax object matches a @scheme[pattern] as follows:
|
||||||
@specsubform[const]{
|
@specsubform[const]{
|
||||||
|
|
||||||
A @scheme[const] is any datum that does not match one of the
|
A @scheme[const] is any datum that does not match one of the
|
||||||
preceeding forms; a syntax object matches a @scheme[const] pattern
|
preceding forms; a syntax object matches a @scheme[const] pattern
|
||||||
when its datum is @scheme[equal?] to the @scheme[quote]d
|
when its datum is @scheme[equal?] to the @scheme[quote]d
|
||||||
@scheme[const].}
|
@scheme[const].}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
;; and tm:julian-day-at-zero-seconds, which refer to the '0' of CURRENT-SECONDS.
|
;; and tm:julian-day-at-zero-seconds, which refer to the '0' of CURRENT-SECONDS.
|
||||||
;;
|
;;
|
||||||
;; SRFI-6, String Ports, and SRFI-8, RECEIVE: Binding Multiple Values,
|
;; SRFI-6, String Ports, and SRFI-8, RECEIVE: Binding Multiple Values,
|
||||||
;; are also used. MzScheme has String Ports built-in. The RECIEVE form
|
;; are also used. MzScheme has String Ports built-in. The RECEIVE form
|
||||||
;; is copied below.
|
;; is copied below.
|
||||||
;;
|
;;
|
||||||
; srfi-8: receive
|
; srfi-8: receive
|
||||||
|
|
|
@ -285,7 +285,7 @@ please adhere to these guidelines:
|
||||||
(plt:hd:manual-installed-date "(~a installeret)")
|
(plt:hd:manual-installed-date "(~a installeret)")
|
||||||
; Help Desk configuration
|
; Help Desk configuration
|
||||||
;; refreshing manuals
|
;; refreshing manuals
|
||||||
(plt:hd:refresh-clearing-indicies "Renser forgemte indekser")
|
(plt:hd:refresh-clearing-indices "Renser forgemte indekser")
|
||||||
;; should not mention `SVN' (plt:hd:refresh-done "Færdig med at opdatere SVN-manualer")
|
;; should not mention `SVN' (plt:hd:refresh-done "Færdig med at opdatere SVN-manualer")
|
||||||
(plt:hd:refreshing-manuals "Genhenter manualer")
|
(plt:hd:refreshing-manuals "Genhenter manualer")
|
||||||
(plt:hd:refresh-downloading... "Henter ~a...")
|
(plt:hd:refresh-downloading... "Henter ~a...")
|
||||||
|
|
|
@ -312,7 +312,7 @@ please adhere to these guidelines:
|
||||||
(plt:hd:refresh-downloading... "Downloading ~a...")
|
(plt:hd:refresh-downloading... "Downloading ~a...")
|
||||||
(plt:hd:refresh-deleting... "Deleting old version of ~a...")
|
(plt:hd:refresh-deleting... "Deleting old version of ~a...")
|
||||||
(plt:hd:refresh-installing... "Installing new version of ~a...")
|
(plt:hd:refresh-installing... "Installing new version of ~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "Clearing cached indices")
|
(plt:hd:refresh-clearing-indices "Clearing cached indices")
|
||||||
(plt:hd:refreshing-manuals-finished "Finished.")
|
(plt:hd:refreshing-manuals-finished "Finished.")
|
||||||
(plt:hd:about-help-desk "About Help Desk")
|
(plt:hd:about-help-desk "About Help Desk")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -450,7 +450,7 @@ please adhere to these guidelines:
|
||||||
(revert-to-defaults "Revert to Defaults")
|
(revert-to-defaults "Revert to Defaults")
|
||||||
|
|
||||||
(black-on-white-color-scheme "Black on White") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "Black on White") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "White on Black") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "White on Black") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
|
|
@ -312,7 +312,7 @@
|
||||||
(plt:hd:refresh-downloading... "Téléchargement de ~a...")
|
(plt:hd:refresh-downloading... "Téléchargement de ~a...")
|
||||||
(plt:hd:refresh-deleting... "Effacement de l'ancienne version de ~a...")
|
(plt:hd:refresh-deleting... "Effacement de l'ancienne version de ~a...")
|
||||||
(plt:hd:refresh-installing... "Installation de la nouvelle version de ~a...")
|
(plt:hd:refresh-installing... "Installation de la nouvelle version de ~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "Effacement des indices cachés")
|
(plt:hd:refresh-clearing-indices "Effacement des indices cachés")
|
||||||
(plt:hd:refreshing-manuals-finished "Terminé.")
|
(plt:hd:refreshing-manuals-finished "Terminé.")
|
||||||
(plt:hd:about-help-desk "A propos de l'Aide")
|
(plt:hd:about-help-desk "A propos de l'Aide")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -450,7 +450,7 @@
|
||||||
(revert-to-defaults "Retour aux valeurs par défaut")
|
(revert-to-defaults "Retour aux valeurs par défaut")
|
||||||
|
|
||||||
(black-on-white-color-scheme "Noir sur blanc") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "Noir sur blanc") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "Blanc sur noir") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "Blanc sur noir") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@
|
||||||
(plt:hd:refresh-downloading... "~a herunterladen...")
|
(plt:hd:refresh-downloading... "~a herunterladen...")
|
||||||
(plt:hd:refresh-deleting... "Alte Version von ~a löschen...")
|
(plt:hd:refresh-deleting... "Alte Version von ~a löschen...")
|
||||||
(plt:hd:refresh-installing... "Neue Version von ~a installieren...")
|
(plt:hd:refresh-installing... "Neue Version von ~a installieren...")
|
||||||
(plt:hd:refresh-clearing-indicies "Gecachte Indizes löschen")
|
(plt:hd:refresh-clearing-indices "Gecachte Indizes löschen")
|
||||||
(plt:hd:refreshing-manuals-finished "Fertig.")
|
(plt:hd:refreshing-manuals-finished "Fertig.")
|
||||||
(plt:hd:about-help-desk "Über das Hilfezentrum")
|
(plt:hd:about-help-desk "Über das Hilfezentrum")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -348,7 +348,7 @@
|
||||||
(revert-to-defaults "Standardeinstellung wiederherstellen")
|
(revert-to-defaults "Standardeinstellung wiederherstellen")
|
||||||
|
|
||||||
(black-on-white-color-scheme "Schwarz auf Weiß") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "Schwarz auf Weiß") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "Weiß auf Schwarz") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "Weiß auf Schwarz") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
@ -951,6 +951,7 @@
|
||||||
(initial-language-category "Sprache am Anfang")
|
(initial-language-category "Sprache am Anfang")
|
||||||
(no-language-chosen "Keine Sprache ausgewählt")
|
(no-language-chosen "Keine Sprache ausgewählt")
|
||||||
|
|
||||||
|
(module-language-name "Sprache aus Quelltext ermitteln")
|
||||||
(module-language-one-line-summary "List die #lang-Zeile, um die tatsächliche Sprache zu ermitteln.")
|
(module-language-one-line-summary "List die #lang-Zeile, um die tatsächliche Sprache zu ermitteln.")
|
||||||
|
|
||||||
(module-language-auto-text "Automatisch Zeile mit #lang") ;; shows up in the details section of the module language
|
(module-language-auto-text "Automatisch Zeile mit #lang") ;; shows up in the details section of the module language
|
||||||
|
|
|
@ -307,7 +307,7 @@ please adhere to these guidelines:
|
||||||
(plt:hd:refresh-downloading... "~a をダウンロードしています...")
|
(plt:hd:refresh-downloading... "~a をダウンロードしています...")
|
||||||
(plt:hd:refresh-deleting... "古いバージョンの ~a を削除しています...")
|
(plt:hd:refresh-deleting... "古いバージョンの ~a を削除しています...")
|
||||||
(plt:hd:refresh-installing... "新しいバージョンの ~a をインストールしています...")
|
(plt:hd:refresh-installing... "新しいバージョンの ~a をインストールしています...")
|
||||||
(plt:hd:refresh-clearing-indicies "キャッシュ内の索引を消去しています")
|
(plt:hd:refresh-clearing-indices "キャッシュ内の索引を消去しています")
|
||||||
(plt:hd:refreshing-manuals-finished "完了しました。")
|
(plt:hd:refreshing-manuals-finished "完了しました。")
|
||||||
(plt:hd:about-help-desk "ヘルプデスクについて")
|
(plt:hd:about-help-desk "ヘルプデスクについて")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -445,7 +445,7 @@ please adhere to these guidelines:
|
||||||
(revert-to-defaults "デフォルトに戻す")
|
(revert-to-defaults "デフォルトに戻す")
|
||||||
|
|
||||||
(black-on-white-color-scheme "白地に黒") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "白地に黒") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "黒地に白") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "黒地に白") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
|
|
@ -289,7 +289,7 @@ please adhere to these guidelines:
|
||||||
(plt:hd:refresh-downloading... "A tirar ~a...")
|
(plt:hd:refresh-downloading... "A tirar ~a...")
|
||||||
(plt:hd:refresh-deleting... "A remover a versão antiga de ~a...")
|
(plt:hd:refresh-deleting... "A remover a versão antiga de ~a...")
|
||||||
(plt:hd:refresh-installing... "A instalar nova versão de ~a...")
|
(plt:hd:refresh-installing... "A instalar nova versão de ~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "A apagar os índices em cache")
|
(plt:hd:refresh-clearing-indices "A apagar os índices em cache")
|
||||||
(plt:hd:refreshing-manuals-finished "Concluído.")
|
(plt:hd:refreshing-manuals-finished "Concluído.")
|
||||||
(plt:hd:about-help-desk "Sobre o Directorio de Ajuda")
|
(plt:hd:about-help-desk "Sobre o Directorio de Ajuda")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
|
|
@ -229,7 +229,7 @@
|
||||||
(plt:hd:refresh-downloading... "下载~a...")
|
(plt:hd:refresh-downloading... "下载~a...")
|
||||||
(plt:hd:refresh-deleting... "删除旧版本的~a...")
|
(plt:hd:refresh-deleting... "删除旧版本的~a...")
|
||||||
(plt:hd:refresh-installing... "安装新版本的~a...")
|
(plt:hd:refresh-installing... "安装新版本的~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "清除缓存中的索引")
|
(plt:hd:refresh-clearing-indices "清除缓存中的索引")
|
||||||
(plt:hd:refreshing-manuals-finished "完成。")
|
(plt:hd:refreshing-manuals-finished "完成。")
|
||||||
(plt:hd:about-help-desk "关于Help Desk")
|
(plt:hd:about-help-desk "关于Help Desk")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
(revert-to-defaults "恢复默认")
|
(revert-to-defaults "恢复默认")
|
||||||
|
|
||||||
(black-on-white-color-scheme "白底黑字") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "白底黑字") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "黑底白字") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "黑底白字") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
|
|
@ -195,11 +195,11 @@
|
||||||
;; Help Desk configuration
|
;; Help Desk configuration
|
||||||
;; refreshing manuals
|
;; refreshing manuals
|
||||||
;; should not mention `SVN' (plt:hd:refresh-done "Refresco de los manuales via SVN terminado")
|
;; should not mention `SVN' (plt:hd:refresh-done "Refresco de los manuales via SVN terminado")
|
||||||
(plt:hd:refresh-clearing-indicies "Eliminando índices guardados")
|
(plt:hd:refresh-clearing-indices "Eliminando índices guardados")
|
||||||
(plt:hd:refresh-deleting... "Borrando la versión vieja de ~a...")
|
(plt:hd:refresh-deleting... "Borrando la versión vieja de ~a...")
|
||||||
(plt:hd:refresh-downloading... "Bajando ~a...")
|
(plt:hd:refresh-downloading... "Bajando ~a...")
|
||||||
(plt:hd:refresh-installing... "Instalando nueva versión de ~a...")
|
(plt:hd:refresh-installing... "Instalando nueva versión de ~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "Eliminando indices almacenados")
|
(plt:hd:refresh-clearing-indices "Eliminando indices almacenados")
|
||||||
(plt:hd:refreshing-manuals "Bajando (nuevamente) los Manuales")
|
(plt:hd:refreshing-manuals "Bajando (nuevamente) los Manuales")
|
||||||
(plt:hd:refreshing-manuals-finished "Terminado.")
|
(plt:hd:refreshing-manuals-finished "Terminado.")
|
||||||
(plt:hd:about-help-desk "Acerca del Módulo de Ayuda")
|
(plt:hd:about-help-desk "Acerca del Módulo de Ayuda")
|
||||||
|
|
|
@ -228,7 +228,7 @@
|
||||||
(plt:hd:refresh-downloading... "下载~a...")
|
(plt:hd:refresh-downloading... "下载~a...")
|
||||||
(plt:hd:refresh-deleting... "删除旧版本的~a...")
|
(plt:hd:refresh-deleting... "删除旧版本的~a...")
|
||||||
(plt:hd:refresh-installing... "安装新版本的~a...")
|
(plt:hd:refresh-installing... "安装新版本的~a...")
|
||||||
(plt:hd:refresh-clearing-indicies "清除缓存中的索引")
|
(plt:hd:refresh-clearing-indices "清除缓存中的索引")
|
||||||
(plt:hd:refreshing-manuals-finished "完成。")
|
(plt:hd:refreshing-manuals-finished "完成。")
|
||||||
(plt:hd:about-help-desk "关于Help Desk")
|
(plt:hd:about-help-desk "关于Help Desk")
|
||||||
(plt:hd:help-desk-about-string
|
(plt:hd:help-desk-about-string
|
||||||
|
@ -366,7 +366,7 @@
|
||||||
(revert-to-defaults "恢复默认")
|
(revert-to-defaults "恢复默认")
|
||||||
|
|
||||||
(black-on-white-color-scheme "白底黑字") ;; these two appear in the color preferences dialog on butttons
|
(black-on-white-color-scheme "白底黑字") ;; these two appear in the color preferences dialog on butttons
|
||||||
(white-on-black-color-scheme "黑底白字") ;; clicking the buttons changes teh color schemes to some defaults that've been set up.
|
(white-on-black-color-scheme "黑底白字") ;; clicking the buttons changes the color schemes to some defaults that've been set up.
|
||||||
|
|
||||||
; title of the color choosing dialog
|
; title of the color choosing dialog
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
;; or the other
|
;; or the other
|
||||||
;; - (vector map) => template portion is a vector,
|
;; - (vector map) => template portion is a vector,
|
||||||
;; contents like the list in map
|
;; contents like the list in map
|
||||||
;; - (box map) => template portion is a box with substition
|
;; - (box map) => template portion is a box with substitution
|
||||||
;; - #s(ellipses elem count map) => template portion is an ellipses-generated list
|
;; - #s(ellipses elem count map) => template portion is an ellipses-generated list
|
||||||
;; - #s(ellipses-quote map) => template has a quoting ellipses
|
;; - #s(ellipses-quote map) => template has a quoting ellipses
|
||||||
;; - #s(prefab v map) => template portion is a prefab
|
;; - #s(prefab v map) => template portion is a prefab
|
||||||
|
|
|
@ -237,7 +237,7 @@ other. The top and bottom pair of angles is @scheme[angle] and the left and righ
|
||||||
Constructs an arbitrary regular star polygon (a generalization of the regular polygons).
|
Constructs an arbitrary regular star polygon (a generalization of the regular polygons).
|
||||||
The polygon is enclosed by a regular polygon with @scheme[side-count] sides each
|
The polygon is enclosed by a regular polygon with @scheme[side-count] sides each
|
||||||
@scheme[side-length] long. The polygon is actually constructed by going from vertex to
|
@scheme[side-length] long. The polygon is actually constructed by going from vertex to
|
||||||
vertex around the regular polgon, but skipping over every @scheme[step-count] verticies.
|
vertex around the regular polgon, but skipping over every @scheme[step-count] vertices.
|
||||||
|
|
||||||
For examples, if @scheme[side-count] is @scheme[5] and @scheme[step-count] is @scheme[2],
|
For examples, if @scheme[side-count] is @scheme[5] and @scheme[step-count] is @scheme[2],
|
||||||
then this function produces a shape just like @scheme[star].
|
then this function produces a shape just like @scheme[star].
|
||||||
|
@ -250,15 +250,15 @@ other. The top and bottom pair of angles is @scheme[angle] and the left and righ
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@defproc*[([(polygon [verticies (listof posn?)]
|
@defproc*[([(polygon [vertices (listof posn?)]
|
||||||
[mode mode?]
|
[mode mode?]
|
||||||
[color image-color?])
|
[color image-color?])
|
||||||
image?]
|
image?]
|
||||||
[(polygon [verticies (listof posn?)]
|
[(polygon [vertices (listof posn?)]
|
||||||
[outline-mode (or/c 'outline "outline")]
|
[outline-mode (or/c 'outline "outline")]
|
||||||
[pen-or-color (or/c pen? image-color?)])
|
[pen-or-color (or/c pen? image-color?)])
|
||||||
image?])]{
|
image?])]{
|
||||||
Constructs a polygon connecting the given verticies.
|
Constructs a polygon connecting the given vertices.
|
||||||
|
|
||||||
@mode/color-text
|
@mode/color-text
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
[use-get/put-dialog (-> (-> any) path? void?)]
|
[use-get/put-dialog (-> (-> any) path? void?)]
|
||||||
[set-module-language! (->* () (boolean?) void?)])
|
[set-module-language! (->* () (boolean?) void?)])
|
||||||
|
|
||||||
(provide fire-up-drscheme
|
(provide fire-up-drscheme-and-run-tests
|
||||||
save-drscheme-window-as
|
save-drscheme-window-as
|
||||||
do-execute
|
do-execute
|
||||||
test-util-error
|
test-util-error
|
||||||
|
@ -622,13 +622,35 @@
|
||||||
;; but just to print and return.
|
;; but just to print and return.
|
||||||
(define orig-display-handler (error-display-handler))
|
(define orig-display-handler (error-display-handler))
|
||||||
|
|
||||||
(define (fire-up-drscheme)
|
(define (fire-up-drscheme-and-run-tests run-test)
|
||||||
|
(let ()
|
||||||
|
;; change the preferences system so that it doesn't write to
|
||||||
|
;; a file; partly to avoid problems of concurrency in drdr
|
||||||
|
;; but also to make the test suite easier for everyone to run.
|
||||||
|
(let ([prefs-table (make-hash)])
|
||||||
|
(fw:preferences:low-level-put-preferences
|
||||||
|
(lambda (names vals)
|
||||||
|
(for-each (lambda (name val) (hash-set! prefs-table name val))
|
||||||
|
names vals)))
|
||||||
|
(fw:preferences:low-level-get-preference
|
||||||
|
(lambda (name [fail (lambda () #f)])
|
||||||
|
(hash-ref prefs-table name fail))))
|
||||||
|
|
||||||
(dynamic-require 'drscheme #f)
|
(dynamic-require 'drscheme #f)
|
||||||
|
|
||||||
;; reset the uncaught exception handler to be sure we kill everything (drscheme sets it)
|
;; set all preferences to their defaults (some pref values may have
|
||||||
|
;; been read by this point, but hopefully that won't affect much
|
||||||
|
;; of the startup of drscheme)
|
||||||
|
(fw:preferences:restore-defaults)
|
||||||
|
|
||||||
|
(thread (λ ()
|
||||||
|
(let ([orig-display-handler (error-display-handler)])
|
||||||
(uncaught-exception-handler
|
(uncaught-exception-handler
|
||||||
(λ (x)
|
(λ (x)
|
||||||
(if (exn? x)
|
(if (exn? x)
|
||||||
(orig-display-handler (exn-message x) x)
|
(orig-display-handler (exn-message x) x)
|
||||||
(fprintf (current-error-port) "uncaught exception ~s\n" x))
|
(fprintf (current-error-port) "uncaught exception ~s\n" x))
|
||||||
(exit 1))))
|
(exit 1))))
|
||||||
|
(run-test)
|
||||||
|
(exit)))
|
||||||
|
(yield (make-semaphore 0))))
|
|
@ -183,9 +183,7 @@ add this test:
|
||||||
(define drs-frame #f)
|
(define drs-frame #f)
|
||||||
(define interactions-text #f)
|
(define interactions-text #f)
|
||||||
|
|
||||||
(let ([s (make-semaphore)])
|
(fire-up-drscheme-and-run-tests
|
||||||
(fire-up-drscheme)
|
|
||||||
(thread
|
|
||||||
(λ ()
|
(λ ()
|
||||||
(set! drs-frame (wait-for-drscheme-frame))
|
(set! drs-frame (wait-for-drscheme-frame))
|
||||||
(set! interactions-text (send drs-frame get-interactions-text))
|
(set! interactions-text (send drs-frame get-interactions-text))
|
||||||
|
@ -194,9 +192,6 @@ add this test:
|
||||||
(do-execute drs-frame)
|
(do-execute drs-frame)
|
||||||
|
|
||||||
(output-err-port-checking) ;; must come first
|
(output-err-port-checking) ;; must come first
|
||||||
;(long-io/execute-test)
|
;;(long-io/execute-test)
|
||||||
(reading-test)
|
(reading-test)))
|
||||||
(semaphore-post s)))
|
|
||||||
(yield s)
|
|
||||||
(exit))
|
|
||||||
|
|
||||||
|
|
|
@ -1352,7 +1352,4 @@ the settings above should match r5rs
|
||||||
(go pretty-big)
|
(go pretty-big)
|
||||||
(go r5rs))
|
(go r5rs))
|
||||||
|
|
||||||
(let ()
|
(fire-up-drscheme-and-run-tests run-test)
|
||||||
(fire-up-drscheme)
|
|
||||||
(thread (λ () (run-test) (exit)))
|
|
||||||
(yield (make-semaphore)))
|
|
||||||
|
|
|
@ -129,7 +129,6 @@
|
||||||
error-ranges-expected
|
error-ranges-expected
|
||||||
(send interactions-text get-error-ranges))))])))))
|
(send interactions-text get-error-ranges))))])))))
|
||||||
|
|
||||||
|
|
||||||
(define drs 'not-yet-drs-frame)
|
(define drs 'not-yet-drs-frame)
|
||||||
(define interactions-text 'not-yet-interactions-text)
|
(define interactions-text 'not-yet-interactions-text)
|
||||||
(define definitions-text 'not-yet-definitions-text)
|
(define definitions-text 'not-yet-definitions-text)
|
||||||
|
|
|
@ -141,7 +141,7 @@
|
||||||
(provide s)
|
(provide s)
|
||||||
(define-syntax (s stx) e))}
|
(define-syntax (s stx) e))}
|
||||||
@t{(require m) s}
|
@t{(require m) s}
|
||||||
@rx{module-lang-test-tmp2.ss:1:[67][90]: compile: bad syntax;
|
@rx{compile: bad syntax;
|
||||||
literal data is not allowed, because no #%datum syntax transformer
|
literal data is not allowed, because no #%datum syntax transformer
|
||||||
is bound in: 1$})
|
is bound in: 1$})
|
||||||
(test @t{(module tmp mzscheme
|
(test @t{(module tmp mzscheme
|
||||||
|
@ -247,11 +247,7 @@
|
||||||
f
|
f
|
||||||
(f)
|
(f)
|
||||||
--
|
--
|
||||||
#t
|
#t)
|
||||||
#:error-ranges
|
|
||||||
(λ (defs ints)
|
|
||||||
(list (make-srcloc ints 3 3 107 1)
|
|
||||||
(make-srcloc ints 3 2 106 3))))
|
|
||||||
|
|
||||||
;; test protection against user-code changing the namespace
|
;; test protection against user-code changing the namespace
|
||||||
(test @t{#lang scheme/base
|
(test @t{#lang scheme/base
|
||||||
|
@ -265,7 +261,4 @@
|
||||||
|
|
||||||
|
|
||||||
(require "drscheme-test-util.ss")
|
(require "drscheme-test-util.ss")
|
||||||
(let ()
|
(fire-up-drscheme-and-run-tests run-test)
|
||||||
(fire-up-drscheme)
|
|
||||||
(thread (λ () (run-test) (exit)))
|
|
||||||
(yield (make-semaphore 0)))
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ This produces an ACK message
|
||||||
backtrace-image-string
|
backtrace-image-string
|
||||||
" "
|
" "
|
||||||
file-image-string
|
file-image-string
|
||||||
" ../../mred/private/snipfile.ss:"))
|
" .*mred/private/snipfile.ss:"))
|
||||||
"[0-9]+:[0-9]+: "
|
"[0-9]+:[0-9]+: "
|
||||||
(regexp-quote str))))
|
(regexp-quote str))))
|
||||||
|
|
||||||
|
@ -190,8 +190,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: reference to undefined identifier: xx"
|
||||||
"reference to undefined identifier: xx"
|
"reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -266,8 +266,8 @@ This produces an ACK message
|
||||||
"define-values: cannot change constant identifier: +"
|
"define-values: cannot change constant identifier: +"
|
||||||
"define-values: cannot change constant identifier: +"
|
"define-values: cannot change constant identifier: +"
|
||||||
"define-values: cannot change constant identifier: +"
|
"define-values: cannot change constant identifier: +"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: define-values: cannot change constant identifier: \\+"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: define-values: cannot change constant identifier: \\+"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: define-values: cannot change constant identifier: \\+")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: define-values: cannot change constant identifier: \\+")
|
||||||
'interactions
|
'interactions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -305,8 +305,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:7: reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:7: reference to undefined identifier: xx"
|
||||||
"reference to undefined identifier: xx"
|
"reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -350,8 +350,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:2:0: reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:2:0: reference to undefined identifier: xx"
|
||||||
"reference to undefined identifier: xx"
|
"reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -417,8 +417,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: x"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: x"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:4: reference to undefined identifier: x"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:4: reference to undefined identifier: x"
|
||||||
"reference to undefined identifier: x"
|
"reference to undefined identifier: x"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -457,8 +457,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #<void>"
|
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #<void>"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: expt: expected argument of type <number>; given #<void>"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: expt: expected argument of type <number>; given #<void>"
|
||||||
"expt: expected argument of type <number>; given #<void>"
|
"expt: expected argument of type <number>; given #<void>"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #<void>"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #<void>"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #<void>")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #<void>")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -507,8 +507,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: x"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: x"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:4: reference to undefined identifier: x"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:4: reference to undefined identifier: x"
|
||||||
"1\n2\nreference to undefined identifier: x"
|
"1\n2\nreference to undefined identifier: x"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: x")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -620,8 +620,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #f\n15"
|
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #f\n15"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:5:19: expt: expected argument of type <number>; given #f\n15"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:5:19: expt: expected argument of type <number>; given #f\n15"
|
||||||
"expt: expected argument of type <number>; given #f\n15"
|
"expt: expected argument of type <number>; given #f\n15"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f\n15"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f\n15"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f\n15")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f\n15")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -644,12 +644,12 @@ This produces an ACK message
|
||||||
|
|
||||||
;; should produce a syntax object with a turn-down triangle.
|
;; should produce a syntax object with a turn-down triangle.
|
||||||
(mktest "(write (list (syntax x)))"
|
(mktest "(write (list (syntax x)))"
|
||||||
(#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:21.*>\"})"
|
(#rx"({embedded \".#<syntax:.*repl-test-tmp.ss:1:21.*>\"})"
|
||||||
#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:21.*>\"})"
|
#rx"({embedded \".#<syntax:.*repl-test-tmp.ss:1:21.*>\"})"
|
||||||
#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp3.ss:1:21.*>\"})"
|
#rx"({embedded \".#<syntax:.*repl-test-tmp3.ss:1:21.*>\"})"
|
||||||
#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:21.*>\"})"
|
#rx"({embedded \".#<syntax:.*repl-test-tmp.ss:1:21.*>\"})"
|
||||||
#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:21.*>\"})"
|
#rx"({embedded \".#<syntax:.*repl-test-tmp.ss:1:21.*>\"})"
|
||||||
#rx"({embedded \".#<syntax:.*/collects/tests/drscheme/repl-test-tmp3.ss:1:21.*>\"})")
|
#rx"({embedded \".#<syntax:.*repl-test-tmp3.ss:1:21.*>\"})")
|
||||||
'interactions
|
'interactions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -685,12 +685,12 @@ This produces an ACK message
|
||||||
|
|
||||||
(mktest "(parameterize ([current-output-port (open-output-string)]) (fprintf (current-error-port) \"~e\" #'foot))"
|
(mktest "(parameterize ([current-output-port (open-output-string)]) (fprintf (current-error-port) \"~e\" #'foot))"
|
||||||
|
|
||||||
(#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:96.*>"
|
(#rx"#<syntax:.*repl-test-tmp.ss:1:96.*>"
|
||||||
#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:96.*>"
|
#rx"#<syntax:.*repl-test-tmp.ss:1:96.*>"
|
||||||
#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp3.ss:1:96.*>"
|
#rx"#<syntax:.*repl-test-tmp3.ss:1:96.*>"
|
||||||
#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:96.*>"
|
#rx"#<syntax:.*repl-test-tmp.ss:1:96.*>"
|
||||||
#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp.ss:1:96.*>"
|
#rx"#<syntax:.*repl-test-tmp.ss:1:96.*>"
|
||||||
#rx"#<syntax:.*/collects/tests/drscheme/repl-test-tmp3.ss:1:96.*>")
|
#rx"#<syntax:.*repl-test-tmp3.ss:1:96.*>")
|
||||||
'interactions
|
'interactions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -719,8 +719,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #f"
|
"{stop-multi.png} {stop-22x22.png} expt: expected argument of type <number>; given #f"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:6:15: expt: expected argument of type <number>; given #f"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:6:15: expt: expected argument of type <number>; given #f"
|
||||||
"expt: expected argument of type <number>; given #f"
|
"expt: expected argument of type <number>; given #f"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: expt: expected argument of type <number>; given #f")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -796,8 +796,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} procedure application: expected procedure, given: 3; arguments were: 3"
|
"{stop-multi.png} {stop-22x22.png} procedure application: expected procedure, given: 3; arguments were: 3"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:3:13: procedure application: expected procedure, given: 3; arguments were: 3"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:3:13: procedure application: expected procedure, given: 3; arguments were: 3"
|
||||||
"procedure application: expected procedure, given: 3; arguments were: 3"
|
"procedure application: expected procedure, given: 3; arguments were: 3"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: procedure application: expected procedure, given: 3; arguments were: 3"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: procedure application: expected procedure, given: 3; arguments were: 3"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: procedure application: expected procedure, given: 3; arguments were: 3")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: procedure application: expected procedure, given: 3; arguments were: 3")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -898,8 +898,8 @@ This produces an ACK message
|
||||||
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} reference to undefined identifier: xx"
|
||||||
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: reference to undefined identifier: xx"
|
"{stop-multi.png} {stop-22x22.png} repl-test-tmp3.ss:1:0: reference to undefined identifier: xx"
|
||||||
"reference to undefined identifier: xx"
|
"reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx"
|
||||||
#rx"{stop-multi.png} {stop-22x22.png} ../../mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
#rx"{stop-multi.png} {stop-22x22.png} .*mred/private/snipfile.ss:[0-9]+:[0-9]+: reference to undefined identifier: xx")
|
||||||
'definitions
|
'definitions
|
||||||
#f
|
#f
|
||||||
void
|
void
|
||||||
|
@ -1069,7 +1069,8 @@ This produces an ACK message
|
||||||
(define backtrace-image-string "{stop-multi.png}")
|
(define backtrace-image-string "{stop-multi.png}")
|
||||||
(define file-image-string "{stop-22x22.png}")
|
(define file-image-string "{stop-22x22.png}")
|
||||||
|
|
||||||
(define tmp-load-directory
|
(define tmp-load-directory (find-system-path 'temp-dir)
|
||||||
|
#;
|
||||||
(normal-case-path
|
(normal-case-path
|
||||||
(normalize-path
|
(normalize-path
|
||||||
(collection-path "tests" "drscheme"))))
|
(collection-path "tests" "drscheme"))))
|
||||||
|
@ -1080,8 +1081,6 @@ This produces an ACK message
|
||||||
(define tmp-load3-short-filename "repl-test-tmp3.ss")
|
(define tmp-load3-short-filename "repl-test-tmp3.ss")
|
||||||
(define tmp-load3-filename (build-path tmp-load-directory tmp-load3-short-filename))
|
(define tmp-load3-filename (build-path tmp-load-directory tmp-load3-short-filename))
|
||||||
|
|
||||||
tmp-load-filename
|
|
||||||
|
|
||||||
(define (cleanup-tmp-files)
|
(define (cleanup-tmp-files)
|
||||||
(when (file-exists? tmp-load-filename) (delete-file tmp-load-filename))
|
(when (file-exists? tmp-load-filename) (delete-file tmp-load-filename))
|
||||||
(when (file-exists? tmp-load3-filename) (delete-file tmp-load3-filename)))
|
(when (file-exists? tmp-load3-filename) (delete-file tmp-load3-filename)))
|
||||||
|
@ -1133,7 +1132,7 @@ tmp-load-filename
|
||||||
; given a filename "foo", we perform two operations on the contents
|
; given a filename "foo", we perform two operations on the contents
|
||||||
; of the file "foo.ss". First, we insert its contents into the REPL
|
; of the file "foo.ss". First, we insert its contents into the REPL
|
||||||
; directly, and second, we use the load command. We compare the
|
; directly, and second, we use the load command. We compare the
|
||||||
; the results of these operations against expected results.
|
; results of these operations against expected results.
|
||||||
(define ((run-single-test execute-text-start escape language-cust) in-vector)
|
(define ((run-single-test execute-text-start escape language-cust) in-vector)
|
||||||
;(printf "\n>> testing ~s\n" (test-program in-vector))
|
;(printf "\n>> testing ~s\n" (test-program in-vector))
|
||||||
(let* ([program (test-program in-vector)]
|
(let* ([program (test-program in-vector)]
|
||||||
|
@ -1515,13 +1514,10 @@ tmp-load-filename
|
||||||
(string-append a b)))
|
(string-append a b)))
|
||||||
|
|
||||||
|
|
||||||
(let ()
|
(exit-handler
|
||||||
(fire-up-drscheme)
|
|
||||||
(wait-for-drscheme-frame) ;; after this point, it is safe to set the exit handler
|
|
||||||
(exit-handler
|
|
||||||
(let ([eh (exit-handler)])
|
(let ([eh (exit-handler)])
|
||||||
(λ (val)
|
(λ (val)
|
||||||
(cleanup-tmp-files)
|
(cleanup-tmp-files)
|
||||||
(eh val))))
|
(eh val))))
|
||||||
(thread (λ () (run-test) (exit)))
|
|
||||||
(yield (make-semaphore 0)))
|
(fire-up-drscheme-and-run-tests run-test)
|
||||||
|
|
7
collects/tests/drscheme/run.sh
Normal file
7
collects/tests/drscheme/run.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
mred module-lang-test.ss &&
|
||||||
|
mred repl-test.ss &&
|
||||||
|
mred io.ss &&
|
||||||
|
mred language-test.ss &&
|
||||||
|
mred syncheck-test.ss &&
|
||||||
|
mred teachpack.ss
|
|
@ -849,8 +849,7 @@ trigger runtime errors in check syntax.
|
||||||
(list '((27 33) (19 26) (36 49) (53 59) (64 66))))))
|
(list '((27 33) (19 26) (36 49) (53 59) (64 66))))))
|
||||||
|
|
||||||
(define (main)
|
(define (main)
|
||||||
(let ([s (make-semaphore 0)])
|
(fire-up-drscheme-and-run-tests
|
||||||
(thread
|
|
||||||
(λ ()
|
(λ ()
|
||||||
(let ([drs (wait-for-drscheme-frame)])
|
(let ([drs (wait-for-drscheme-frame)])
|
||||||
(set-language-level! (list "Pretty Big"))
|
(set-language-level! (list "Pretty Big"))
|
||||||
|
@ -864,13 +863,7 @@ trigger runtime errors in check syntax.
|
||||||
(preferences:set 'framework:coloring-active #t)
|
(preferences:set 'framework:coloring-active #t)
|
||||||
(send defs save-file) ;; clear out autosave
|
(send defs save-file) ;; clear out autosave
|
||||||
(send defs set-filename #f)
|
(send defs set-filename #f)
|
||||||
(delete-file filename)
|
(delete-file filename)))))))
|
||||||
;; let the app die.
|
|
||||||
(semaphore-post s))))))
|
|
||||||
(fire-up-drscheme)
|
|
||||||
(yield s)
|
|
||||||
(printf "Tests complete.\n")
|
|
||||||
(exit)))
|
|
||||||
|
|
||||||
(define ((run-one-test save-dir) test)
|
(define ((run-one-test save-dir) test)
|
||||||
(let* ([drs (wait-for-drscheme-frame)]
|
(let* ([drs (wait-for-drscheme-frame)]
|
||||||
|
|
|
@ -238,7 +238,4 @@
|
||||||
;(bad-tests)
|
;(bad-tests)
|
||||||
(test-built-in-teachpacks))
|
(test-built-in-teachpacks))
|
||||||
|
|
||||||
(let ()
|
(fire-up-drscheme-and-run-tests run-test)
|
||||||
(fire-up-drscheme)
|
|
||||||
(thread (λ () (run-test) (exit)))
|
|
||||||
(yield (make-semaphore)))
|
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
state))))
|
state))))
|
||||||
|
|
||||||
; Given the size of a vector and a procedure which
|
; Given the size of a vector and a procedure which
|
||||||
; sends indicies to desired vector elements, create
|
; sends indices to desired vector elements, create
|
||||||
; and return the vector.
|
; and return the vector.
|
||||||
(define proc->vector
|
(define proc->vector
|
||||||
(lambda (size f)
|
(lambda (size f)
|
||||||
|
@ -278,7 +278,7 @@
|
||||||
; vertex. Each entry is a bool indicating if the edge exists.
|
; vertex. Each entry is a bool indicating if the edge exists.
|
||||||
; The diagonal of the matrix is never examined.
|
; The diagonal of the matrix is never examined.
|
||||||
; Make-minimal? returns a procedure which tests if a labelling
|
; Make-minimal? returns a procedure which tests if a labelling
|
||||||
; of the verticies is such that the matrix is minimal.
|
; of the vertices is such that the matrix is minimal.
|
||||||
; If it is, then the procedure returns the result of folding over
|
; If it is, then the procedure returns the result of folding over
|
||||||
; the elements of the automoriphism group. If not, it returns #f.
|
; the elements of the automoriphism group. If not, it returns #f.
|
||||||
; The folding is done by calling folder via
|
; The folding is done by calling folder via
|
||||||
|
@ -382,11 +382,11 @@
|
||||||
|
|
||||||
|
|
||||||
; Fold over rooted directed graphs with bounded out-degree.
|
; Fold over rooted directed graphs with bounded out-degree.
|
||||||
; Size is the number of verticies (including the root). Max-out is the
|
; Size is the number of vertices (including the root). Max-out is the
|
||||||
; maximum out-degree for any vertex. Folder is called via
|
; maximum out-degree for any vertex. Folder is called via
|
||||||
; (folder edges state)
|
; (folder edges state)
|
||||||
; where edges is a list of length size. The ith element of the list is
|
; where edges is a list of length size. The ith element of the list is
|
||||||
; a list of the verticies j for which there is an edge from i to j.
|
; a list of the vertices j for which there is an edge from i to j.
|
||||||
; The last vertex is the root.
|
; The last vertex is the root.
|
||||||
(define fold-over-rdg
|
(define fold-over-rdg
|
||||||
(lambda (size max-out folder state)
|
(lambda (size max-out folder state)
|
||||||
|
@ -622,7 +622,7 @@
|
||||||
|
|
||||||
;;; ==== test input ====
|
;;; ==== test input ====
|
||||||
|
|
||||||
; Produces all directed graphs with N verticies, distinguished root,
|
; Produces all directed graphs with N vertices, distinguished root,
|
||||||
; and out-degree bounded by 2, upto isomorphism (there are 44).
|
; and out-degree bounded by 2, upto isomorphism (there are 44).
|
||||||
|
|
||||||
;(define go
|
;(define go
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
(module regexmatch mzscheme
|
(module regexmatch mzscheme
|
||||||
(define rx
|
(define rx
|
||||||
(string-append
|
(string-append
|
||||||
"(?:^|[^0-9\\(])" ; (1) preceeding non-digit or bol
|
"(?:^|[^0-9\\(])" ; (1) preceding non-digit or bol
|
||||||
"(" ; (2) area code
|
"(" ; (2) area code
|
||||||
"\\(([0-9][0-9][0-9])\\)" ; (3) is either 3 digits in parens
|
"\\(([0-9][0-9][0-9])\\)" ; (3) is either 3 digits in parens
|
||||||
"|" ; or
|
"|" ; or
|
||||||
|
|
|
@ -235,15 +235,30 @@
|
||||||
(for/list ([x (in-generator (helper 0) (helper 1) (helper 2))])
|
(for/list ([x (in-generator (helper 0) (helper 1) (helper 2))])
|
||||||
x)))
|
x)))
|
||||||
|
|
||||||
|
(let ([g (lambda () (generator (yield 1) (yield 2) (yield 3)))])
|
||||||
|
(let ([g (g)]) (test '(1 2 3) list (g) (g) (g)))
|
||||||
|
(let ([g (g)]) (test '(1 2 3 10 10) list (g) (g) (g) (g 10) (g)))
|
||||||
|
(let ([g (generator (yield (yield (yield 1))))])
|
||||||
|
(test '(1 2 3 4 4 4) list (g) (g 2) (g 3) (g 4) (g) (g)))
|
||||||
|
(let ([g (g)])
|
||||||
|
(test '(fresh 1 suspended 2 suspended 3 suspended last done)
|
||||||
|
list (generator-state g) (g)
|
||||||
|
(generator-state g) (g)
|
||||||
|
(generator-state g) (g)
|
||||||
|
(generator-state g) (g 'last)
|
||||||
|
(generator-state g)))
|
||||||
|
(letrec ([g (generator (yield (generator-state g))
|
||||||
|
(yield (generator-state g)))])
|
||||||
|
(test '(fresh running suspended running suspended last done)
|
||||||
|
list (generator-state g) (g)
|
||||||
|
(generator-state g) (g)
|
||||||
|
(generator-state g) (g 'last)
|
||||||
|
(generator-state g))))
|
||||||
|
|
||||||
(let* ([helper (lambda (pred num)
|
(let* ([helper (lambda (pred num)
|
||||||
(for ([i (in-range 0 3)])
|
(for ([i (in-range 0 3)]) (yield (pred (+ i num)))))]
|
||||||
(yield (pred (+ i num)))))]
|
[g1 (generator (helper odd? 1) (yield 'odd))]
|
||||||
[g1 (generator
|
[g2 (generator (helper even? 1) (yield 'even))])
|
||||||
(helper odd? 1)
|
|
||||||
(yield 'odd))]
|
|
||||||
[g2 (generator
|
|
||||||
(helper even? 1)
|
|
||||||
(yield 'even))])
|
|
||||||
(test '(#t #f #f #t #t #f odd even) 'yield-helper
|
(test '(#t #f #f #t #t #f odd even) 'yield-helper
|
||||||
(list (g1) (g2) (g1) (g2) (g1) (g2) (g1) (g2))))
|
(list (g1) (g2) (g1) (g2) (g1) (g2) (g1) (g2))))
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,13 @@
|
||||||
#:with ty (syntax-property #'name 'type-label)
|
#:with ty (syntax-property #'name 'type-label)
|
||||||
#:with ann-name #'name))
|
#:with ann-name #'name))
|
||||||
|
|
||||||
|
(define-splicing-syntax-class (param-annotated-name trans)
|
||||||
|
#:attributes (name ty ann-name)
|
||||||
|
#:description "type-annotated identifier"
|
||||||
|
#:literals (:)
|
||||||
|
(pattern [~seq name:id : ty]
|
||||||
|
#:with ann-name (syntax-property #'name 'type-label (trans #'ty))))
|
||||||
|
|
||||||
(define-syntax-class annotated-binding
|
(define-syntax-class annotated-binding
|
||||||
#:attributes (name ty ann-name binding rhs)
|
#:attributes (name ty ann-name binding rhs)
|
||||||
(pattern (~and whole [:annotated-name rhs:expr])
|
(pattern (~and whole [:annotated-name rhs:expr])
|
||||||
|
|
|
@ -209,6 +209,8 @@
|
||||||
[char-downcase (-> -Char -Char)]
|
[char-downcase (-> -Char -Char)]
|
||||||
[char-titlecase (-> -Char -Char)]
|
[char-titlecase (-> -Char -Char)]
|
||||||
[char-foldcase (-> -Char -Char)]
|
[char-foldcase (-> -Char -Char)]
|
||||||
|
[char->integer (-> -Char -Nat)]
|
||||||
|
[integer->char (-> -Nat -Char)]
|
||||||
|
|
||||||
[string-normalize-nfd (-> -String -String)]
|
[string-normalize-nfd (-> -String -String)]
|
||||||
[string-normalize-nfkd (-> -String -String)]
|
[string-normalize-nfkd (-> -String -String)]
|
||||||
|
@ -365,11 +367,20 @@
|
||||||
[(-Path) (-lst -Path)])]
|
[(-Path) (-lst -Path)])]
|
||||||
|
|
||||||
[hash? (make-pred-ty (make-HashtableTop))]
|
[hash? (make-pred-ty (make-HashtableTop))]
|
||||||
|
[hash-eq? (-> (make-HashtableTop) B)]
|
||||||
|
[hash-eqv? (-> (make-HashtableTop) B)]
|
||||||
|
[hash-weak? (-> (make-HashtableTop) B)]
|
||||||
[make-hash (-poly (a b) (-> (-HT a b)))]
|
[make-hash (-poly (a b) (-> (-HT a b)))]
|
||||||
[make-hasheq (-poly (a b) (-> (-HT a b)))]
|
[make-hasheq (-poly (a b) (-> (-HT a b)))]
|
||||||
|
[make-hasheqv (-poly (a b) (-> (-HT a b)))]
|
||||||
[make-weak-hash (-poly (a b) (-> (-HT a b)))]
|
[make-weak-hash (-poly (a b) (-> (-HT a b)))]
|
||||||
[make-weak-hasheq (-poly (a b) (-> (-HT a b)))]
|
[make-weak-hasheq (-poly (a b) (-> (-HT a b)))]
|
||||||
|
[make-weak-hasheqv (-poly (a b) (-> (-HT a b)))]
|
||||||
|
[make-immutable-hash (-poly (a b) (-> (-lst (-pair a b)) (-HT a b)))]
|
||||||
|
[make-immutable-hasheq (-poly (a b) (-> (-lst (-pair a b)) (-HT a b)))]
|
||||||
|
[make-immutable-hasheqv (-poly (a b) (-> (-lst (-pair a b)) (-HT a b)))]
|
||||||
|
|
||||||
|
[hash-set (-poly (a b) ((-HT a b) a b . -> . (-HT a b)))]
|
||||||
[hash-set! (-poly (a b) ((-HT a b) a b . -> . -Void))]
|
[hash-set! (-poly (a b) ((-HT a b) a b . -> . -Void))]
|
||||||
[hash-map (-poly (a b c) ((-HT a b) (a b . -> . c) . -> . (-lst c)))]
|
[hash-map (-poly (a b c) ((-HT a b) (a b . -> . c) . -> . (-lst c)))]
|
||||||
[hash-ref (-poly (a b c)
|
[hash-ref (-poly (a b c)
|
||||||
|
@ -379,6 +390,25 @@
|
||||||
[hash-ref! (-poly (a b)
|
[hash-ref! (-poly (a b)
|
||||||
(cl-> [((-HT a b) a (-> b)) b]
|
(cl-> [((-HT a b) a (-> b)) b]
|
||||||
[((-HT a b) a b) b]))]
|
[((-HT a b) a b) b]))]
|
||||||
|
[hash-has-key? (-poly (a b) (-> (-HT a b) a B))]
|
||||||
|
[hash-update! (-poly (a b)
|
||||||
|
(cl-> [((-HT a b) a (-> b b)) -Void]
|
||||||
|
[((-HT a b) a (-> b b) (-> a)) -Void]
|
||||||
|
[((-HT a b) a (-> b b) a) -Void]))]
|
||||||
|
[hash-update (-poly (a b)
|
||||||
|
(cl-> [((-HT a b) a (-> b b)) (-HT a b)]
|
||||||
|
[((-HT a b) a (-> b b) (-> a)) (-HT a b)]
|
||||||
|
[((-HT a b) a (-> b b) a) (-HT a b)]))]
|
||||||
|
[hash-remove (-poly (a b) ((-HT a b) a . -> . (-HT a b)))]
|
||||||
|
[hash-remove! (-poly (a b) ((-HT a b) a . -> . -Void))]
|
||||||
|
[hash-map (-poly (a b c) ((-HT a b) (a b . -> . c) . -> . (-lst c)))]
|
||||||
|
[hash-for-each (-poly (a b c) (-> (-HT a b) (-> a b c) -Void))]
|
||||||
|
[hash-count (-poly (a b) (-> (-HT a b) -Nat))]
|
||||||
|
[hash-copy (-poly (a b) (-> (-HT a b) (-HT a b)))]
|
||||||
|
[eq-hash-code (-poly (a) (-> a -Integer))]
|
||||||
|
[eqv-hash-code (-poly (a) (-> a -Integer))]
|
||||||
|
[equal-hash-code (-poly (a) (-> a -Integer))]
|
||||||
|
[equal-secondary-hash-code (-poly (a) (-> a -Integer))]
|
||||||
[hash-iterate-first (-poly (a b)
|
[hash-iterate-first (-poly (a b)
|
||||||
((-HT a b) . -> . (Un (-val #f) -Integer)))]
|
((-HT a b) . -> . (Un (-val #f) -Integer)))]
|
||||||
[hash-iterate-next (-poly (a b)
|
[hash-iterate-next (-poly (a b)
|
||||||
|
@ -428,9 +458,6 @@
|
||||||
|
|
||||||
[make-directory (-> -Path -Void)]
|
[make-directory (-> -Path -Void)]
|
||||||
|
|
||||||
[hash-for-each (-poly (a b c)
|
|
||||||
(-> (-HT a b) (-> a b c) -Void))]
|
|
||||||
|
|
||||||
[delete-file (-> -Pathlike -Void)]
|
[delete-file (-> -Pathlike -Void)]
|
||||||
[make-namespace (->opt [(Un (-val 'empty) (-val 'initial))] -Namespace)]
|
[make-namespace (->opt [(Un (-val 'empty) (-val 'initial))] -Namespace)]
|
||||||
[make-base-namespace (-> -Namespace)]
|
[make-base-namespace (-> -Namespace)]
|
||||||
|
|
|
@ -340,6 +340,6 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
||||||
(let ()
|
(let ()
|
||||||
(define ((mk l/c) stx)
|
(define ((mk l/c) stx)
|
||||||
(syntax-parse stx
|
(syntax-parse stx
|
||||||
[(_ k:annotated-name . body)
|
[(_ (~var k (param-annotated-name (lambda (s) #`(#,s -> (U))))) . body)
|
||||||
(quasisyntax/loc stx (#,l/c k.name . body))]))
|
(quasisyntax/loc stx (#,l/c k.ann-name . body))]))
|
||||||
(values (mk #'let/cc) (mk #'let/ec))))
|
(values (mk #'let/cc) (mk #'let/ec))))
|
||||||
|
|
|
@ -132,7 +132,7 @@ result of @scheme[_loop] (and thus the result of the entire
|
||||||
@deftogether[[
|
@deftogether[[
|
||||||
@defform[(let/cc: v : t . body)]
|
@defform[(let/cc: v : t . body)]
|
||||||
@defform[(let/ec: v : t . body)]]]{Type-annotated versions of
|
@defform[(let/ec: v : t . body)]]]{Type-annotated versions of
|
||||||
@scheme[let/cc] and @scheme[let/ec].}
|
@scheme[let/cc] and @scheme[let/ec]. @scheme[t] is the type that will be provided to the continuation @scheme[v].}
|
||||||
|
|
||||||
@subsection{Anonymous Functions}
|
@subsection{Anonymous Functions}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
|
|
||||||
;; substitute many variables
|
;; substitute many variables
|
||||||
;; substitution = Listof[U List[Name,Type] List[Name,Listof[Type]]]
|
;; substitution = Listof[U List[Name,Type] List[Name,Listof[Type]]]
|
||||||
;; subst-all : substition Type -> Type
|
;; subst-all : substitution Type -> Type
|
||||||
(define (subst-all s t)
|
(define (subst-all s t)
|
||||||
(for/fold ([t t]) ([e s])
|
(for/fold ([t t]) ([e s])
|
||||||
(match e
|
(match e
|
||||||
|
|
|
@ -1188,7 +1188,7 @@ General
|
||||||
- The teaching libraries are now called teachpacks. See the teachpack
|
- The teaching libraries are now called teachpacks. See the teachpack
|
||||||
release notes for more information.
|
release notes for more information.
|
||||||
|
|
||||||
- DrScheme's languages have changed (again). The langauges are now:
|
- DrScheme's languages have changed (again). The languages are now:
|
||||||
|
|
||||||
- Beginning Student
|
- Beginning Student
|
||||||
- Intermediate Student
|
- Intermediate Student
|
||||||
|
|
|
@ -1360,7 +1360,7 @@ System:
|
||||||
is just the right height to display one line of text.
|
is just the right height to display one line of text.
|
||||||
inherits from mred:wrapping-canvas%
|
inherits from mred:wrapping-canvas%
|
||||||
mred:frame-title-canvas%
|
mred:frame-title-canvas%
|
||||||
updates the title of the frame when it recieves focus
|
updates the title of the frame when it receives focus
|
||||||
events. inherits from mred:wrapping-canvas%
|
events. inherits from mred:wrapping-canvas%
|
||||||
- all of the "connection maintenence" ie edits that know which canvses
|
- all of the "connection maintenence" ie edits that know which canvses
|
||||||
they are in, frames that know which canvas is the most recently
|
they are in, frames that know which canvas is the most recently
|
||||||
|
|
|
@ -178,7 +178,7 @@ v4.1 (this is the first version that was included in the PLT
|
||||||
|
|
||||||
- handling of non-terminals uses that have underscores in
|
- handling of non-terminals uses that have underscores in
|
||||||
them now works properly (only showed up when using them
|
them now works properly (only showed up when using them
|
||||||
in the definition of a langauge)
|
in the definition of a language)
|
||||||
|
|
||||||
- an extended language can now define multiple non-terminals
|
- an extended language can now define multiple non-terminals
|
||||||
together
|
together
|
||||||
|
|
|
@ -299,7 +299,7 @@ size_t CORD_rchr(CORD x, size_t i, int c);
|
||||||
/* the correct buffer size. */
|
/* the correct buffer size. */
|
||||||
/* 4. Most of the conversions are implement through the native */
|
/* 4. Most of the conversions are implement through the native */
|
||||||
/* vsprintf. Hence they are usually no faster, and */
|
/* vsprintf. Hence they are usually no faster, and */
|
||||||
/* idiosyncracies of the native printf are preserved. However, */
|
/* idiosyncrasies of the native printf are preserved. However, */
|
||||||
/* CORD arguments to CORD_sprintf and CORD_vsprintf are NOT copied; */
|
/* CORD arguments to CORD_sprintf and CORD_vsprintf are NOT copied; */
|
||||||
/* the result shares the original structure. This may make them */
|
/* the result shares the original structure. This may make them */
|
||||||
/* very efficient in some unusual applications. */
|
/* very efficient in some unusual applications. */
|
||||||
|
|
|
@ -1866,6 +1866,7 @@ static void Master_collect() {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("%i SIGNALED BUT NOT COLLECTED\n", i);
|
printf("%i SIGNALED BUT NOT COLLECTED\n", i);
|
||||||
|
children_ready = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (children_ready) {
|
if (children_ready) {
|
||||||
|
|
|
@ -2,7 +2,7 @@ SenoraGC is a relatively portable conservative GC for a slightly
|
||||||
cooperative environment.
|
cooperative environment.
|
||||||
|
|
||||||
The collector is intended mainly for debugging and memory tracing, but
|
The collector is intended mainly for debugging and memory tracing, but
|
||||||
it can also act as a reasonbaly effecient, general-purpose,
|
it can also act as a reasonbaly efficient, general-purpose,
|
||||||
conservative collector. The standard MzScheme build uses SGC for
|
conservative collector. The standard MzScheme build uses SGC for
|
||||||
certain platforms where Boehm's GC hasn't been ported, yet (notably,
|
certain platforms where Boehm's GC hasn't been ported, yet (notably,
|
||||||
OSKit and BeOS).
|
OSKit and BeOS).
|
||||||
|
|
|
@ -3335,7 +3335,7 @@ static void register_transitive_use(Optimize_Info *info, int pos, int j)
|
||||||
void scheme_env_make_closure_map(Optimize_Info *info, mzshort *_size, mzshort **_map)
|
void scheme_env_make_closure_map(Optimize_Info *info, mzshort *_size, mzshort **_map)
|
||||||
{
|
{
|
||||||
/* A closure map lists the captured variables for a closure; the
|
/* A closure map lists the captured variables for a closure; the
|
||||||
indices are resolved two new indicies in the second phase of
|
indices are resolved two new indices in the second phase of
|
||||||
compilation. */
|
compilation. */
|
||||||
Optimize_Info *frame;
|
Optimize_Info *frame;
|
||||||
int i, j, pos = 0, lpos = 0, tu;
|
int i, j, pos = 0, lpos = 0, tu;
|
||||||
|
|
|
@ -2643,7 +2643,7 @@ static Scheme_Object *do_build_path(int argc, Scheme_Object **argv, int idelta,
|
||||||
/* Originally, it made sense to just perform build operations
|
/* Originally, it made sense to just perform build operations
|
||||||
directly on string representations, because it was simple enough.
|
directly on string representations, because it was simple enough.
|
||||||
Over the years, though, as we refined the path syntax for Windows
|
Over the years, though, as we refined the path syntax for Windows
|
||||||
to deal with all of its idiosyncracies, this has gotten completely
|
to deal with all of its idiosyncrasies, this has gotten completely
|
||||||
out of hand. */
|
out of hand. */
|
||||||
{
|
{
|
||||||
#define PN_BUF_LEN 256
|
#define PN_BUF_LEN 256
|
||||||
|
|
|
@ -548,9 +548,11 @@ scheme_init_fun (Scheme_Env *env)
|
||||||
REGISTER_SO(is_method_symbol);
|
REGISTER_SO(is_method_symbol);
|
||||||
REGISTER_SO(scheme_inferred_name_symbol);
|
REGISTER_SO(scheme_inferred_name_symbol);
|
||||||
REGISTER_SO(cont_key);
|
REGISTER_SO(cont_key);
|
||||||
|
REGISTER_SO(barrier_prompt_key);
|
||||||
is_method_symbol = scheme_intern_symbol("method-arity-error");
|
is_method_symbol = scheme_intern_symbol("method-arity-error");
|
||||||
scheme_inferred_name_symbol = scheme_intern_symbol("inferred-name");
|
scheme_inferred_name_symbol = scheme_intern_symbol("inferred-name");
|
||||||
cont_key = scheme_make_symbol("k"); /* uninterned */
|
cont_key = scheme_make_symbol("k"); /* uninterned */
|
||||||
|
barrier_prompt_key = scheme_make_symbol("bar"); /* uninterned */
|
||||||
|
|
||||||
REGISTER_SO(scheme_default_prompt_tag);
|
REGISTER_SO(scheme_default_prompt_tag);
|
||||||
{
|
{
|
||||||
|
@ -2150,11 +2152,6 @@ void *scheme_top_level_do_worker(void *(*k)(void), int eb, int new_thread, Schem
|
||||||
if (!new_thread) {
|
if (!new_thread) {
|
||||||
prompt->is_barrier = 1;
|
prompt->is_barrier = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!barrier_prompt_key) {
|
|
||||||
REGISTER_SO(barrier_prompt_key);
|
|
||||||
barrier_prompt_key = scheme_make_symbol("bar"); /* uninterned */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MZ_PRECISE_GC
|
#ifdef MZ_PRECISE_GC
|
||||||
|
@ -5061,9 +5058,9 @@ call_cc (int argc, Scheme_Object *argv[])
|
||||||
static Scheme_Cont *grab_continuation(Scheme_Thread *p, int for_prompt, int composable,
|
static Scheme_Cont *grab_continuation(Scheme_Thread *p, int for_prompt, int composable,
|
||||||
Scheme_Object *prompt_tag,
|
Scheme_Object *prompt_tag,
|
||||||
Scheme_Cont *sub_cont, Scheme_Prompt *prompt,
|
Scheme_Cont *sub_cont, Scheme_Prompt *prompt,
|
||||||
Scheme_Meta_Continuation *prompt_cont, MZ_MARK_POS_TYPE prompt_pos,
|
Scheme_Meta_Continuation *prompt_cont,
|
||||||
Scheme_Prompt *barrier_prompt, Scheme_Prompt *effective_barrier_prompt,
|
Scheme_Prompt *effective_barrier_prompt
|
||||||
Scheme_Meta_Continuation *barrier_cont, MZ_MARK_POS_TYPE barrier_pos)
|
)
|
||||||
{
|
{
|
||||||
Scheme_Cont *cont;
|
Scheme_Cont *cont;
|
||||||
|
|
||||||
|
@ -5700,8 +5697,7 @@ internal_call_cc (int argc, Scheme_Object *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
cont = grab_continuation(p, 0, composable, prompt_tag, sub_cont,
|
cont = grab_continuation(p, 0, composable, prompt_tag, sub_cont,
|
||||||
prompt, prompt_cont, prompt_pos,
|
prompt, prompt_cont, effective_barrier_prompt);
|
||||||
barrier_prompt, effective_barrier_prompt, barrier_cont, barrier_pos);
|
|
||||||
|
|
||||||
scheme_zero_unneeded_rands(p);
|
scheme_zero_unneeded_rands(p);
|
||||||
|
|
||||||
|
@ -6107,7 +6103,7 @@ static Scheme_Object *compose_continuation(Scheme_Cont *cont, int exec_chain,
|
||||||
|
|
||||||
/* Grab a continuation so that we capture the current Scheme stack,
|
/* Grab a continuation so that we capture the current Scheme stack,
|
||||||
etc.: */
|
etc.: */
|
||||||
saved = grab_continuation(p, 1, 0, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, 0);
|
saved = grab_continuation(p, 1, 0, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
if (p->meta_prompt)
|
if (p->meta_prompt)
|
||||||
saved->prompt_stack_start = p->meta_prompt->stack_boundary;
|
saved->prompt_stack_start = p->meta_prompt->stack_boundary;
|
||||||
|
|
|
@ -2832,7 +2832,7 @@ typedef struct Scheme_Module_Phase_Exports
|
||||||
Scheme_Object *kernel_exclusion; /* we allow up to two exns, but they must be shadowed */
|
Scheme_Object *kernel_exclusion; /* we allow up to two exns, but they must be shadowed */
|
||||||
Scheme_Object *kernel_exclusion2;
|
Scheme_Object *kernel_exclusion2;
|
||||||
|
|
||||||
Scheme_Hash_Table *ht; /* maps external names to array indicies; created lazily */
|
Scheme_Hash_Table *ht; /* maps external names to array indices; created lazily */
|
||||||
} Scheme_Module_Phase_Exports;
|
} Scheme_Module_Phase_Exports;
|
||||||
|
|
||||||
typedef struct Scheme_Module_Exports
|
typedef struct Scheme_Module_Exports
|
||||||
|
|
|
@ -606,7 +606,7 @@ wxCursor::wxCursor(wxBitmap *mask, wxBitmap *bm, int hotSpotX, int hotSpotY)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c = new WXGC_PTRS wxColour(); /* to recieve bit values */
|
c = new WXGC_PTRS wxColour(); /* to receive bit values */
|
||||||
|
|
||||||
cMacCustomCursor = new WXGC_ATOMIC Cursor;
|
cMacCustomCursor = new WXGC_ATOMIC Cursor;
|
||||||
|
|
||||||
|
|
|
@ -401,7 +401,7 @@ typedef struct { byte *pic; /* image data */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* indicies into conv24MB */
|
/* indices into conv24MB */
|
||||||
#define CONV24_8BIT 0
|
#define CONV24_8BIT 0
|
||||||
#define CONV24_24BIT 1
|
#define CONV24_24BIT 1
|
||||||
#define CONV24_SEP1 2
|
#define CONV24_SEP1 2
|
||||||
|
|
|
@ -1377,7 +1377,7 @@ wxCursor::wxCursor(wxBitmap *bm, wxBitmap *mask, int hotSpotX, int hotSpotY)
|
||||||
mask_dc = temp_mask_mdc;
|
mask_dc = temp_mask_mdc;
|
||||||
}
|
}
|
||||||
|
|
||||||
c = new wxColour(); /* to recieve bit values */
|
c = new wxColour(); /* to receive bit values */
|
||||||
|
|
||||||
/* Windows wants cursor data in terms of an "and" bit array and
|
/* Windows wants cursor data in terms of an "and" bit array and
|
||||||
"xor" bit array. */
|
"xor" bit array. */
|
||||||
|
|
|
@ -222,7 +222,7 @@ to define them here. They will end up in the private(!) header file.
|
||||||
|
|
||||||
@ A private variable is used to track the keyboard focus, but only
|
@ A private variable is used to track the keyboard focus, but only
|
||||||
while traversal is on. If |traversal_focus| is |True|, it means that
|
while traversal is on. If |traversal_focus| is |True|, it means that
|
||||||
the widget has keyboard focus and that that focus is a result of
|
the widget has keyboard focus and that focus is a result of
|
||||||
keyboard traversal. It also means that the widget's border is
|
keyboard traversal. It also means that the widget's border is
|
||||||
highlighted, although that is only visible if the |highlightThickness|
|
highlighted, although that is only visible if the |highlightThickness|
|
||||||
is positive.
|
is positive.
|
||||||
|
|
|
@ -886,7 +886,7 @@ int wxImage::QuickCheck(byte *pic24, int w, int h, int maxcol)
|
||||||
finds more than 'maxcol' colors, it returns '0'. If it DOESN'T, it does
|
finds more than 'maxcol' colors, it returns '0'. If it DOESN'T, it does
|
||||||
the 24-to-8 conversion by simply sticking the colors it found into
|
the 24-to-8 conversion by simply sticking the colors it found into
|
||||||
a colormap, and changing instances of a color in pic24 into colormap
|
a colormap, and changing instances of a color in pic24 into colormap
|
||||||
indicies (in pic) */
|
indices (in pic) */
|
||||||
|
|
||||||
unsigned long colors[256],col;
|
unsigned long colors[256],col;
|
||||||
int i, nc, low, high, mid;
|
int i, nc, low, high, mid;
|
||||||
|
|
|
@ -382,7 +382,7 @@ typedef struct { byte *pic; /* image data */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* indicies into conv24MB */
|
/* indices into conv24MB */
|
||||||
#define CONV24_8BIT 0
|
#define CONV24_8BIT 0
|
||||||
#define CONV24_24BIT 1
|
#define CONV24_24BIT 1
|
||||||
#define CONV24_SEP1 2
|
#define CONV24_SEP1 2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user