How to decide what to kill



I think that this is rather a "package" problem. I think that there should 
not be a distinction between builtin and not-builtin functions, but rather 
a package "user" where (per default) all the functions defined in a 
session go into. 

This looks a little cryptic to me, so I try again:

Just as in Maple, Mathematica, MuPad, ... (probably in all major CAS), 
there should be a way to define a "package". For example, there could be a 
package "combinatorica" where all the related functions go in. Finally, 
there would be a package "user", where all the definitions that the user 
types at runtime go in (if he doesn't state otherwise).

The best thing might be to try to re-use the common-lisp packaging system. 
Not too sure about this, but maybe we could solve two issues in one go: I 
find it rather annoying that it is not clear which parts of the system 
some "module" (such as hayat or combin) actually uses. It also reminds on 
our discovery that "if" and "complement" are not only common-lisp macros, 
but also defined in maxima...

By the way, could somebody explain to me what the command 
(macsyma-module name) does? Is this the starting point for such a 
packaging system?

I do have rather strong feelings for this point, I think it is *very* 
important for maxima's future. Ah yes, and I quickly should disclaim that 
I am aware of the fact that such a system might raise new problems and 
leave some existing problems unsolved... Still, I'm pretty sure that it is 
the "right" approach. After all, it would go along with the documentation 
task...

Martin