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.