> It seems that block allows one to initialize local variables
> ... but I cannot see where the former is documented as legal.
You are right that it is not documented under the Function: BLOCK, where
it should be documented. It is, however, documented in the section
Function Definition/Function. This is of course a documentation bug.
> Can lexical scope be obtained other than with macros?
No. Though various people have proposed adding lexical scope to the
Maxima language over the years, as far as I know there is no
implementation or even specification.
-s