To be fair, the base language of PLT never claimed to support any relevant standard. Instead implementations of standards are built as libraries on top of the base language. So PLT does provide both R5RS and R6RS, both with mutable pairs.
It is when you want to use PLT-specific non-RnRS libraries from RnRS code, you run into pair incompatibilities.
But before this change, I believe every PLT Scheme implementation was a superset of standard Scheme. (Which every Scheme implementation is.) Now it's actually incompatible.
So is MzScheme effectively like Erlang now? I thought the immutable memory in Erlang does make some things difficult to code, which would have been a reason for me to prefer Scheme.
Actually, mutable cons cells are in PLT, they're just created using mcons instead of cons, and accessed with mcar/mcdr. While this does make porting code a bit difficult, it's a very old change - Matthew's original blog post on the subject is dated from end-2007:
Not really. Only pairs are immutable now; vectors, strings, structures, hash tables and all the rest are still mutable. There's also separate mutable pairs. And mutable bindings, as always.
I doubt you would find the immutable aspect in Erlang a problem in practice. I don't know MzScheme, but Erlang has a its own very different philosophy. I suggest Joe's thesis as an interesting read.
Well I found it a problem when I tried to program a Sieve Of Eratosthenes for project Euler. Also when I considered a grid based alife simulation. I guess the only way would be to use a process per cell?
Sometimes the mutable structures get passed around in the function arguments, so you might do a sequence of tail recursive calls and on each call you pass in the next board state to the same function. I would hope the Erlang Questions mailing list would help you if you posted a small example and explained your troubles to them. There are lots of very clever Erlang people there.
Originally we used Scheme48. I forget exactly why we switched. I vaguely recall some problem with threads. I think we chose PLT Scheme because it seemed like the default Scheme implementation.
In case you decide to compile MzScheme 372 from sources on a Fedora 10 box that has SELinux in enforcing mode, you need to take a few (simple) additional steps:
I wonder whether Arc will end up in effect maintaining mutable-cons mzscheme. If this happens, I hope that Arc's focus won't shift to the implementation details.
There were also a couple changes since then. IIRC the most significant are that ontable is gone (each expanded to take its place) and that you can call readc etc with no arg (and read from stdin).