1. (one I mentioned before) Is it just me who thinks that it is a bad
idea to have same quasiquote forms expand correctly in one context and
fail in another?
You're referring to the fact that "(unquote 1 2)" is sometimes legal or not, depending on what's surrounding it, right?
I might agree if I thought UNQUOTE and UNQUOTE-SPLICING were actual syntactic forms, like QUOTE or DEFINE-SYNTAX. But really, they're just literal identifiers which QUASIQUOTE looks for when it walks its input form (like ELSE and => for COND).
2a. As a performance optimization. Imagine that "macro-apply" expands
to some complex _expression_. It is usually cheaper to evaluate:
(some-procedure (macro-apply some-contents))
than:
(some-procedure (macro-apply-car some-contents) (macro-apply-cadr
some-contents) (macro-apply-caddr some-contents))
Interesting idea. Note that if you merely move the name SOME-PROCEDURE into the argument list of MACRO-APPLY, then the macro can return just one form and achieve the same effect.