> > So is there a good reason to either a) not have f be Basic or b) not let > Tuple hold functions like f (and not discriminate against them in a has > query)? >
a) To me it seems strange that f is not Basic (Lambda is an Expr for instance). Moreover if we want the recursively evaluated Expr from another thread here on the mailing list, we need f to be Expr b) There is already "has not supported for non-Basic without _has_matcher". So we have defined the interface we want. On the other hand, it is not pythonic (as far as I understand it, I might be wrong) to force the user to subclass Basic in order to work with sympy. More generally, I do not understand why we want everything to be Basic. The only argument that I hear is "in order to rebuild the expressions". But rebuilding uses `type(object)(object.args)`, Why should we force the use of Basic in addition to that. If an object has .args we rebuild it as shown. If not we either raise an error or copy it (copying is much better as it allows having strings in args - just check every class that has a 'name' attribute to see how useful this would be). -- 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.
