problem with recursive functions



Hi,

I am quite new to Maxima, and got stuck with recursive functions.
Consider the following example:

f[1] : lambda( [x], makelist( i, i, 1, x ) );
f[d] := lambda( [x], 2*f[d-1](x) );

Then f[1](8) will create a list with 8 elements, however f[2](8) will not work.
Why is that? If I just define f[1] as:

f[1] : lambda( [x], x );

then it works fine. Why it does not work with a list? Actually what I am trying
to achieve is a bit more complicated. With f[1](x) I need to create a list with
x elements. Then f[2](x) should make another list with x elements, where each
element is the original list created by f[1], and modified on the way. Further,
f[3](x) should create a list of list of lists etc. Is there any way to do this?
If x is a fixed number, I can do it, but the nice thing would be to have it as a
parameter.

Thanks for you help, and best regards,
Norbert