It seems that block allows one to initialize local variables by
writing
block([var1: exp1, var2: exp2, ..], ...)
instead of
block([var1, var2, ..],
var1: exp1,
var2: exp2,
...)
, but I cannot see where the former is documented as legal. Is this a
behavior one may rely on, or should one use the the latter form
(which might not be equivalent when exp2 involves var1)?
Also, block apparently has dynamic scope (like Mathematica's Block[]):
(C1) f() := x;
(D1) f() := x
(C2) block([x:1], f());
(D2) 1
Can lexical scope be obtained other than with macros?
Thanks again,
Albert.