[sympy] deep processing of args

2010-03-28 Thread smichr
I keep running into the following need and wonder if we should do something about it. Whenever I want to run a method over the arguments of an expression (essential doing a deep processing of an expression) I have to set up the following filter: if expr is None: # because integrals use None as

Re: [sympy] deep processing of args

2010-03-28 Thread Ondrej Certik
On Sun, Mar 28, 2010 at 6:51 PM, smichr wrote: > I keep running into the following need and wonder if we should do > something about it. > > Whenever I want to run a method over the arguments of an expression > (essential doing a deep processing of an expression) I have to set up > the following f

Re: [sympy] deep processing of args

2010-03-28 Thread Aaron S. Meurer
So, either everything should have Basic args, which means no None, tuples, etc., or we could have some kind of helper method in Basic that returns a list of only the symbolic arguments. For the second one, you would modify the list with what you want, and then send it back to the same object th

Re: [sympy] deep processing of args

2010-03-28 Thread Ronan Lamy
Well, I think that everything should have Basic args. There's a comment in the code somewhere to that effect and that's an invariant we should respect scrupulously, together with expr.func(*expr.args) == expr. tuples should be replaced with a Tuple type (SymTuple in secondquant.py is basically wh

Re: [sympy] deep processing of args

2010-03-28 Thread Aaron S. Meurer
I do agree. Two questions: 1. Will this affect performance, using SymTuple instead of tuple, since we use args to hash objects? It probably won't, but I guess we should benchmark it to make sure. 2. What would you use to replace the use of None in Integral, as in Integral(f(x), (x, None, 1))

Re: [sympy] deep processing of args

2010-03-28 Thread Ronan Lamy
Le dimanche 28 mars 2010 à 20:50 -0600, Aaron S. Meurer a écrit : > I do agree. Two questions: > > 1. Will this affect performance, using SymTuple instead of tuple, since we > use args to hash objects? > It probably won't, but I guess we should benchmark it to make sure. Probably not. Note th

Re: [sympy] deep processing of args

2010-03-28 Thread Ondrej Certik
On Sun, Mar 28, 2010 at 8:46 PM, Ronan Lamy wrote: > Le dimanche 28 mars 2010 à 20:50 -0600, Aaron S. Meurer a écrit : >> I do agree.  Two questions: >> >> 1. Will this affect performance, using SymTuple instead of tuple, since we >> use args to hash objects? >> It probably won't, but I guess we

Re: [sympy] deep processing of args

2010-03-28 Thread Aaron S. Meurer
The None is essentially inert substitution, so maybe it should work like Integral(f(x), x)(y). I'd like to get the same syntax working for f(x).diff(x)(y) to mean f'(y) (the derivative of f evaluated at y) as per issue 1620. By the way, I implemented this to allow general case solutions from

Re: [sympy] deep processing of args

2010-03-28 Thread Ondrej Certik
On Sun, Mar 28, 2010 at 9:59 PM, Aaron S. Meurer wrote: > The None is essentially inert substitution, so maybe it should work like > Integral(f(x), x)(y).  I'd like to get the same syntax working for > f(x).diff(x)(y) to mean f'(y) (the derivative of f evaluated at y) as per > issue 1620. > > B

Re: [sympy] deep processing of args

2010-03-28 Thread Aaron S. Meurer
It's based on Maple's intat() function, which is what it's dsolve() returns in these cases. See http://www.maplesoft.com/support/help/Maple/view.aspx?path=intat&term=intat. I think I preferred this over Integral(f(x), (x, a, y)) because if the user eventually substitutes f(x) for something th

Re: [sympy] deep processing of args

2010-03-29 Thread Ronan Lamy
Le dimanche 28 mars 2010 à 22:59 -0600, Aaron S. Meurer a écrit : > The None is essentially inert substitution, so maybe it should work like > Integral(f(x), x)(y). > I'd like to get the same syntax working for f(x).diff(x)(y) to mean f'(y) > (the derivative of f > evaluated at y) as per issue