Hi Neilen,
> la[i,j]:='concat(facefun,i).'concat(facefun,j);
> matrix([facefun1.facefun1,facefun1.facefun2],
> [facefun1.facefun2,facefun2.facefun2])
The difference between the two things you tried probably has
an explanation which hinges on obscure details of the ev function.
However, my advice is to avoid using concat here. I don't know
exactly what you want, but it's likely that there is a simpler way.
You can just write facefun[i] without declaring facefun to be a
vector or array or anything, and Maxima will just carry the
subscript around.
la[i, j] := facefun[i] . facefun[j];
genmatrix (la, 2, 2);
=> matrix([facefun[1]^^2,facefun[1] . facefun[2]],
[facefun[2] . facefun[1],facefun[2]^^2])
HTH
Robert Dodier