This is a bit of a crank idea, but here goes. Today I wasted some time trying to find the bug in the following piece of code:
(define (syntax-car syntax) (syntax-case syntax () ((car . cdr) #'car))) Better error reporting in macro-expansion errors might have made it less painful, but maybe we can solve the problem itself. How about making 'foo turn into something like (__quote__ foo), and similar for `foo, #'foo, etc.? Where __quote__ is just a synonym to quote, and the original works too. Ideal would be a symbol that's not as noisy (in debug output) but still highly improbable to appear in user code and be accidentally shadowed. Maybe it would not be standards-compliant in the strict sense, but I believe it would be an improvement. Am I missing any obvious downsides? Or any subtle ones? I peeked into Guile's sources to see where one might start implementing this (read.c, expand.c, psyntax.scm?) but better to ask for some input since it might be a controversial change, and I'm still a total noob in Guile's code-base. Taylan