Apart from cleaner code, a syntax-case macro will retain source code
"May", not "will". R6RS-Libraries 12.2 says: "A syntax object [...] may also be used by an implementation to maintain source-object correlation".
This is not only important for debugging but
makes it possible to write macros like the R7RS form `include', which
shall include the file from the directory where the source of the
include form comes from.
Note that include in R7RS is non-hygienic: the code is interpolated as-is.
On the other hand, something like `syntax-e' can easily be implemented
on top of `syntax-case', so in any `syntax-case' system, you can use
your favorite pattern matcher.
The rock-bottom core of a syntax-case system (per Eli Barzilay of Racket) is syntax, syntax->datum, datum->syntax, and either syntax-e or syntax-case.
John Cowan http://vrici.lojban.org/~cowan firstname.lastname@example.org
All Gaul is divided into three parts: the part that cooks with lard and goose
fat, the part that cooks with olive oil, and the part that cooks with butter.