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.)
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 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
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:
newlineprocedure to break output into separate lines. Unfortunately, there are two different conventions in use by different Scheme systems. One is to always use
newlineat 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.
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.