The information here currently corresponds with versions 6.0-6.4. We will try to track new versions as they come out. We also have support for the older versions 4.0-5.3.6, 370-372, 300-360, 201-209, 200, 103, 102, 101, 100, and 53. (Prior to version 5.0, the program now known as DrRacket was called DrScheme.)
Language
menu's
Choose Language...
option. For compatibility with Concrete
Abstractions, select to the "Pretty Big" language listed under the
"Legacy Languages" heading. (In recent versions of DrRacket, the "Legacy Languages" heading is itself nested under "Other Languages".)
By default, this language setting causes DrRacket to forbid you from
redefining any name for which it already has a built-in definition.
This creates problems because Concrete Abstractions
assumes that you can define some names (listed subsequently) that DrRacket already has defined.
To avoid this issue, use the Show Details
button within the
Change Language...
panel and then uncheck the box labeled
"Disallow redefinition of initial bindings".
Also, this language setting causes DrRacket to be "case
sensitive" by default. For example, the symbols barbara
and
Barbara
are treated as distinct, contradicting Exercise
13.18. If you consider compatibility in this regard to be important,
you can use the Show Details
button within the
Change Language...
panel and then turn case sensitivity off.
The libraries can be installed by using DrRacket's "Install Package..." command in the File menu, specifying a package source of
https://gustavus.edu/+max/concabs/schemes/drscheme/concabs.zip
To use the library for graphical images, your definitions file within DrRacket should start with the line
(require (lib "fungraph.ss" "concabs"))
In addition to the features described in the textbook (most succinctly in the appendix), there are a few extensions. Descriptions of those extensions and a couple hints regarding usage are in a separate web page.
To use the object-oriented programming system library for chapter 14, your definitions file within DrRacket should start with the line
(require (lib "oops.ss" "concabs"))
We list below the affected names, organized into categories and listed within each category in their order of their appearance within the book:
length
list-ref
list-tail
map
reverse
gcd
compose
filter
expand
sort
keyword?
read-eval-print-loop
object?
make-object
class?
(newline)
newline
procedure to
break output into separate lines. Unfortunately, there are two
different conventions in use by different Scheme systems. One is to
always use newline
at the start of each line of output,
while the other is to always use it at the end of each line. As a
result of this lack of standardization, wherever we positioned the
uses of (newline)
in our programs would result in output
that looked odd on some systems. We've tried in the textbook to make
choices that don't look too horrible on any system, with the result
that the output tends to look sub-optimal on every system. In
particular, there tends to be extra blank lines. If you are working
consistently within DrRacket (or any other one system), feel free to
remove or reposition (newline)
as necessary to make the
output look best.
rcross-bb
, are
neither pre-defined nor defined within the library. Instead, their
definitions are in a separate file.
(newline)
.
show
procedure.
read-eval-print-loop
, which gives a
normal Scheme (as opposed to micro-Scheme or mini-Scheme) REPL. Thus,
if you fail to execute the definition from the book, you could be
fooled by DrRacket's loop into thinking that everything is working
fine. To guard against this, be on the lookout for the different
prompts; micro-Scheme and mini-Scheme both specifically identify
themselves in their prompts.