"""But Common Lisp is so flexible that at every stage in your development, you can tweak and twist things left and right, but in the end you still get a convincing, clean, and efficient design. As far as I can tell, this is not possible in any other language (not even Scheme)."""
Of course, this kind of begs the question... why not in Scheme? Considering it's part of the Lisp family as well, what makes CL more flexible? (Taking into account that "Scheme the language", as based on R5RS, R6RS, etc, is limited; but a particular Scheme implementation might have everything & the kitchen sink.)
CL, and its object system particularly, specifies a lot of extensibility and sometimes hilarious dynamicity with exacting detail. E.g. you can subclass a class that doesn't even exist yet (!)
That's just one detail, but CL is chock full of such niceties, owing to the fact that a lot of rivaling factions of super-smart programmers wanted to get all their favorite features into it.
That doesn't seem correct. I know of at least two Scheme implementations that have reader macros (Racket and Chicken); there might be more. However, whether their reader macros are as powerful as CL's [1], I don't know.
These are implementation-specific extensions, not part of Scheme. Scheme doesn't have e.g. a GUI either (neither does CL) notwithstanding that specific Scheme and CL implementations have GUIs. It's borderline trivial to add reader macros to any implementation of any dialect of Lisp, but only in CL can you count on having them available.
Of course, this kind of begs the question... why not in Scheme? Considering it's part of the Lisp family as well, what makes CL more flexible? (Taking into account that "Scheme the language", as based on R5RS, R6RS, etc, is limited; but a particular Scheme implementation might have everything & the kitchen sink.)