function arguments and gensym



  About sanitizing Maxima via gensym.


  The function arguments may have very different bindings:

   as a function, as an array, property list, etc.

  
  So I suggest one of these two options:

  1.- When replacing an argument s with gensym copy all these properties
      before evaluating the argument.   


  2.- Define the functions like in this example:

     f(s_Array, g_Function) := ...

    This way is clear what the symbol s stand for. 


 In other languages this problem doesn't exists because each symbol has 
 only one binding:

  In C,  int i 
         char j
         int *k

 In Maxima the only way to make a function with argument "s" is to pass to 
 the function all the information about symbol "s", so clearly you can't 
pass the function a value and then try to use it as a function.


Best Regards

-Miguel.