applying at levels



Hi,

Does someone know if there a facility in Maxima for applying a function
(or maybe other operation) at a certain level in a nested list. I don't
want to write something that already exists.
For instance, Mathematica has Flatten[expr,n], so that, for example

   Mma                   Maxima
  Flatten[expr]   --> flatten(expr)
  Flatten[expr,1] --> apply('append,expr)
  Flatten[expr,2] --> map(lambda([x],apply('append,x)),expr)

(not correct in all cases, since this only works if each argument
to append is a list.)

Thanks,
John