How to write this concat expression in the right way



Hello,

I am using maxima since some time, but now I have a trivial problem with it. 
It more or less plain lisp, but...

I give the folowing to maxima:
(%i1) y : x1$
(%i2) d1y:x2$
(%i3) concat(d,1,y);
(%o3) d1x1
(%i4) concat(d,1,'y);
(%o4) d1y
(%i5) ev(concat(d,1,'y));
(%o5) d1x1

Nr. 1 and 2 is just initialition.
Nr 3 is clear: y is set to x1 therefore the concat command uses x1 to 
construct d1x1.
Nr 4 is also clear: We suppress by using ' the set in of x1.

Now the problem: Why does Nr 5 expand to d1x1 and not to d1y or x2?

An even more important question is: How can I get maxima to evaluate somethong 
like Nr 5 to x2?
The reason I need it is that there are several more variables I want to setup 
via a loop.

Thanks
Christian