which the framework's background-rectangle implementation can use
to queue refreshes for changing rectangles, instead of requiring a
full-canvas refresh
[It will not bother me if we revert this commit. I liked SK's idea and found it easy to implement. I wonder if others will be worried that it is easy to unintentionally leave off the second argument to check-error. I also wonder if it is problematic to add new string constants, like I've done.]
Here is an example:
(check-error (/ 1 0) "/: division by zero")
(check-error (/ 1 0) "divide by zero")
(check-error (/ 1 0))
(check-error 1)
Here is the output:
Ran 4 tests.
2 of the 4 tests failed.
No signature violations.
Check failures:
check-error encountered the following error instead of the expected divide by zero
:: /: division by zero
in ex.rkt, line 2, column 0
check-error expected an error, but instead received the value 1.
in ex.rkt, line 4, column 0
Now use for/fold to thread the index through the iteration form, so
that all variants can take advantage of the optional #:length
argument. Previously, only the for/vector and for/flvector used the
The behavior when #:length does not match the number of iterations has
changed: iteration stops when either the vector is full, or the
requested number of iterations has been achieved, whichever comes
first. If #:length is larger than the number of iterations performed,
then the remaining slots in the vector are filled with the default
argument of (make-vector ...), which is currently 0.
- Now the faster forms take a #:length keyword to designate the length
of the vector to pre-allocate.
- The for/[fl]vector forms take multiple body expressions and set the
vector component to the value of the last one.
- When given a #:length argument, the for/vector and for/flvector
forms check that the iteration is not exceeding the given length,
raising exn:fail if it does.
- Test cases for the multiple body expressions and the exception for
excessive iterations have been added.
- Doc modifications to bring the docs in line with the new forms.
- Doc modifications to note that the #:length versions of the form
*may* all the computation to be performed more efficiently, and
stating that it "is an error" if the given length-expr does not
produce a valid length for a vector that matches the number of
iterations for the loop.
- Note that no test is made for a number of loop iterations that is
smaller than the given vector length. Also, the for*/[fl]vector
forms do not optimize when given a #:length argument. These are
areas for future improvement.
language dialog, not the #lang htdp/* variants), teachpacks are put into the
initial REPL (instead of just having the language primitives).
closes PR 11160