Newbie question about scoping rules



Michel Van den Bergh <michel.vandenbergh <at> uhasselt.be> writes:

(%i1) g(s):=block([i],print(s[4]));
(%o1) g(s):=block([i],print(s[4]))
(%i2) g(cat);cat[4]
(%o2) cat[4]

 That is, the problem is the evaluation of s in the block, is s the global or 
the argument.  Maxima choose the global if it exists else if choose the 
function arguments.

 I'm new too, so this is my opinion.