> Are there objects that presently use this, or is it just something
> that you want to do?  There are potential subtle issues with this.
I do not know of any such objects. I will probably not do it as it
will only bring more confusion to what an atom is.

I really need help with that question. Is there a clear notion of atom
in sympy? A notion that does not clash with obj.func(*obj.args)==obj?
If not can we set such a definition now?

How about this:

Atoms may be awfully complicated object with internal structure and
whatever, however for SymPy they will be the end of any recursion
trees (Dummy has a counter, Symbol has a name, etc...)

Non-atoms must follow these rules:
 - obj.func(*obj.args) == obj
 - evalf(srepr(obj)) == obj

Atoms must follow these rules:
 - either subclass Atom or have no args (as in no attribute, not as in
args being empty)
 - evalf(srepr(obj)) == obj

Note that I do not propose all(isinstance(a, Basic) for a in obj.args)
as a rule. Because if we have a clear notion of atom there is no
problem to have non-Basic instances in args.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to