R5RS Pitfalls Test Results

This test suite was created for SISC to test R5RS compliance in edge cases of the standard that are often overlooked or tricky to implement correctly.  The tests are, for the most part, collections of expressions from the comp.lang.scheme newsgroup from discussions of consequences of the R5RS standard, bugs in the standard's implementation of derived expressions, and bugs found in other Scheme systems.  The source of the test is r5rs_pitfall.scm.

Below are the results of Scheme systems I have access to and which at least claim to support most of the R5RS standard.

System 1.1 1.2 1.3 2.1 3.1 3.2 3.3 4.1 4.2 5.1 5.2 5.3 6.1 7.1 7.2 7.3 7.4 8.1 Map
Bigloo 2.5c F F P F F P P F F P P P P P P P P F
Chez 6.9 P P P P P P P P P P P P P P P P P P call/cc
Chicken 1.0 Fn Fn P P P P P P P P P P P P P P P P call/cc
Gauche 0.6.6 F F P P P P ? P P P P P P P P P F ?
Kawa 1.6.99 F F F F P P P P P P P P P F F F F P F
Larceny (*) F P F P P F P P P P P P P P P P P P call/cc
MIT-Scheme 7.7.1 F F P P P P P P P F F F P P P P P P
MzScheme 203 F F P P P P P P P P P P P P P P P P
Scheme48 1.2 P P P P P P P P P P P P P P P P P P call/cc
SCM 5d7 P P P F P P P P P P P P P P P P P P
SISC 1.7.3 P P P P P P P P P P P P P P P P P P call/cc, tr

Key: Pass, Fail, ?=results unavailable, call/cc=System's map isn't affected by call/cc. tr=map is tail recursive.

Notes

Jeff Siskind points out that its possible to be both call/cc and tail recursive, but the example he cites uses reverse after processing the list. So map can be:

Pick two. In the above table, we've noted when a system is resistant to call/cc effects, and labeled systems that we know are tail recursive because the implementor has said so. Others in the list may be tail recursive.


Systems claiming R5RS compliance not tested were OpenScheme and Rhizome/pi, due to not having a compatible OS handy to run them on.
SourceForge Logo