"`map' is truncating" message and other assorted messages



Re maperror and mapprint,

Controlling the behavior of functions by global variables is ugly and
error-prone.  For libraries of Maxima code to have predictable
behavior, every use of "map" needs to be surrounded by something like

     block([maperror:<some value>,mapprint:<some value>], ... map(...) ...)

We should bite the bullet and decide what behavior we want map to
have, and get rid of both maperror and mapprint.

The argument for allowing different lengths of argument is
convenience, for example, my favorite map("+",-list,rest(list)) for
differences (though it would be nice if "-" were also a binary
operator...), instead of map("+",-rest(list,-1),rest(list)).

The argument for forbidding different length of arguments (or warning)
is to help the user catch certain kinds of error.

Though I'm usually in the second camp, I concede that in this case I'm
seduced by convenience for explicit calls to map.  On the other hand,
I'm not comfortable with extending silent truncation to the implicit
case, e.g. [a,b,c]+[d,e] => [a+d,b+e], which creates a very weird kind
of vector operation where a 3-vector plus a 2-vector is a 2-vector and
ignores the 3rd component of the 3-vector.  True, it allows
rest(list)-list instead of rest(list)-rest(list,-1), which is exactly
parallel to the explicit case above, and I like that convenience, but
it still feels like an abuse of notation. (Yes, this is because Maxima
conflates vectors and lists, but until that changes....)

Thoughts?

             -s