Using Concrete Abstractions with Other Schemes

This web page provides information regarding the use of Scheme implementations other than the ones we specifically support with Concrete Abstractions: An Introduction to Computer Science Using Scheme, by Max Hailperin, Barbara Kaiser, and Karl Knight.

Naturally we can't address all problems that might arise with an arbitrary Scheme implementation. Thus, we would suggest that students working on their own would be best off using one of the Scheme implementations we specifically support. However, course instructors who are familiar with a particular Scheme implementation might prefer to use that implementation. To help those instructors, we provide here some sample code that can serve as a starting point for developing a compatability library. You should also read the Appendix of the book, which points out those areas where compatability problems are likely to arise.

Compatability library

The following files implement the non-standard Scheme procedures assumed by the book in terms of R4RS standard features.

General notes

Names defined in both Concrete Abstractions and the Scheme implementation

Positioning of (newline)

Starting in chapter 6, we use the 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 one system, feel free to remove or reposition (newline) as necessary to make the output look best.

Chapter by chapter notes

Chapter 1
The procedures for manipulating graphical images need to be loaded from a library, as described above. Additionally, it is worth noting that the various basic blocks, such as rcross-bb, are neither pre-defined nor defined within the library. Instead, their definitions are in a separate file.
Chapter 11
Although you could use the SLIM simulator from the application section to work through the earlier sections of this chapter under Scheme, you'd be better off using SLIME.
Chapter 14
You will need to load a library file to get the object-oriented programming system. A good starting point would be our system-independent version.
Chapter 15
Scheme cannot be used for this chapter, since this chapter doesn't use the Scheme programming language. You will need to use a Java 1.1 system instead.

For more information, see the parent web page, or contact Max Hailperin:
Email: max@gustavus.edu
Mathematics and Computer Science Department
Gustavus Adolphus College
800 W. College Avenue
St. Peter, MN 56082
USA