Problems with map.



There are issues with pattern matching, too.
matchdeclare(a,true,b,true);
defmatch(m1,a/b);
m1(x/y)  returns [a=x,b=y]
m1(1/2) returns false.

The concept of atom goes back to Democritus:  an atom can't be broken up 
any further.

Lisp atoms can be broken up further by looking at symbol properties, 
name-strings etc,
and for numbers looking at bit representations.  Maxima numbers (esp. 
rat, complex, bigfloat)
are even further from "atomic".



If we define maxima's map  more carefully to require merely that the 
main operator must be
acceptable to application in the appropriate fashion, we might not need 
to define atom.

that is,   map(f, g(a,b,c))   is illegal if

g(f(a),f(b),f(c))  is illegal.

fullmap and mapatom may complicate the situation.
Also not knowing really what the operator "g"  is, has problems. e.g. in 
1/2 is the operator "/" really?
Does the Lisp rational-number presentation with a / mean there is a 
division? Does
the Lisp number 1.2E30  have an "E" in it?

RJF