IMO to add things like immutability and modules defeats the 'philosophy' of lisp. It makes it harder to build lisps atop PLT.
---
When you just load a series of files in PLT you can declare your functions in any order and in any file. Nice.
But turn those files into modules and now you have errors.
compile: unbound identifier in module
I've spent crazy quantities of time trying to decompose arc's implementation into files (http://arclanguage.org/item?id=11869) while getting around modules.
"In Scheme, combinations must have at least one subexpression, so that
() is not a syntactically valid expression."
This means I can't make the arc compiler R5R6 scheme without lots of crazy checking all over the place about whether to emit () or '().
(And to decompose arc into arbitrary files I need to come up with a weird language that accepts () like mzscheme mode, but doesn't use modules.)
---
The arc implementation is far more verbose than it could be because of PLT's phase separation rules -- it must implement its own macro system (http://arclanguage.org/item?id=11529)
---
If anybody has suggestions around these constraints I'm all ears.