Hacking gadflies

More changes coming in R6RS

The editorial committee charged with preparing the next version of the language definition for Scheme produced another status report on June 21. The committee is now proposing some fairly significant changes beyond those announced in the March status report; highlights follow. They are also considering (not yet proposing) an extremely radical change, which I'll discuss at the end -- skip ahead to the last three paragraphs whenever you get tired of the small stuff.

First, then, here are some of the new features and language changes that the committee endorses and will propose:

Now for the radical change that the authors are considering: making pairs immutable (i.e., abolishing set-car! and set-cdr!). The idea is to enable both implementers and programmers to code many common operations and primitives more simply and more efficiently and to provide better detection and reporting of errors. Any program that currently uses mutable pairs would have to be rewritten to use a programmer-defined record type instead (or even a two-element vector).

The authors are even considering the further step of requiring that second argument to the cons procedure be a list. Woo-hoo! No more dotted pairs!

Making pairs immutable would break so much existing Scheme code that I find it difficult to believe that this change will ever be adopted, but it is now on the table.