Le lundi 23 mai 2011 à 01:38 +0100, Ronan Lamy a écrit :
> Le dimanche 22 mai 2011 à 17:25 +0100, Ronan Lamy a écrit :
> > Le dimanche 22 mai 2011 à 09:51 -0600, Aaron S. Meurer a écrit :
> > > On May 22, 2011, at 9:34 AM, Andy Ray Terrel wrote:
> > > 
> > > > On Sat, May 21, 2011 at 10:51 PM, Ondrej Certik <ond...@certik.cz> 
> > > > wrote:
> > > >> On Sat, May 21, 2011 at 8:21 PM, Andy Ray Terrel 
> > > >> <andy.ter...@gmail.com> wrote:
> > > >>> On Sat, May 21, 2011 at 10:10 PM, Ronan Lamy <ronan.l...@gmail.com> 
> > > >>> wrote:
> > > >>>> Le samedi 21 mai 2011 à 21:50 -0500, Andy Ray Terrel a écrit :
> > > >>>>> On Sun, May 15, 2011 at 6:54 PM, Brian Granger 
> > > >>>>> <elliso...@gmail.com> wrote:
> > > >>>>>> On Sat, May 14, 2011 at 1:49 PM, Vinzent Steinberg
> > > >>>>>> <vinzent.steinb...@googlemail.com> wrote:
> > > >>>>>>> On 14 Mai, 18:31, Ronan Lamy <ronan.l...@gmail.com> wrote:
> > > >>>>>>>> _op_priority was designed to help with implementing arithmetic
> > > >>>>>>>> operations, particularly for things that aren't "calculus 
> > > >>>>>>>> expressions"
> > > >>>>>>>> yet have meaningful __add__, __mul__, __pow__, etc. such as 
> > > >>>>>>>> vectors and
> > > >>>>>>>> operators of various kinds. But it turns out that it doesn't 
> > > >>>>>>>> really help
> > > >>>>>>>> (http://groups.google.com/group/sympy/browse_thread/thread/810e127bc41...)
> > > >>>>>>>> and it isn't used anywhere currently.
> > > >>>>>>>> 
> > > >>>>>>>> It also has fundamental flaws that prevent it from ever evolving 
> > > >>>>>>>> into a
> > > >>>>>>>> complete solution to the problem: it assumes that the priority 
> > > >>>>>>>> order is
> > > >>>>>>>> the same for all operations and turns this order into a total 
> > > >>>>>>>> order,
> > > >>>>>>>> introducing couplings between objects that would otherwise have 
> > > >>>>>>>> no
> > > >>>>>>>> knowledge of each other.
> > > >>>>>>>> 
> > > >>>>>>>> So, I think that there's little benefit in including into 0.7.0, 
> > > >>>>>>>> but it
> > > >>>>>>>> would have the significant drawback of committing us to support 
> > > >>>>>>>> this
> > > >>>>>>>> feature for who knows how long, and therefore of making much more
> > > >>>>>>>> difficult to refactor this critical mechanism. And if 
> > > >>>>>>>> _op_priority does
> > > >>>>>>>> turn out to be useful, it can easily be added back in after the 
> > > >>>>>>>> release
> > > >>>>>>>> by reverting the removal.
> > > >>>>>>> 
> > > >>>>>>> If it is not used, I think we can remove it.
> > > >>>>>> 
> > > >>>>>> +1
> > > >>>>>> 
> > > >>>>> 
> > > >>>>> Please don't do this. I use op_priority all the time. Its the one
> > > >>>>> reason I haven't release my code because I depend on this
> > > >>>>> functionality.
> > > >>>> 
> > > >>>> You're a bit late: it's been removed already, in
> > > >>>> 041995d37563f1e0743c75a311035b553f66741e. But we could revert that
> > > >>>> commit. Can you open an issue and link to code that uses 
> > > >>>> _op_priority?
> > > >>>> 
> > > >>> 
> > > >>> Hmm the last three weeks have been a blur for me.
> > > >>> 
> > > >>> My whole tensor library [0] depends on it, and I thought it was a 
> > > >>> great
> > > >>> idea even if it seems incomplete because core code will just call Mul,
> > > >>> Add, ... never giving the custom call a callback.
> > > >>> 
> > > >>> issue opened at [1]
> > > >> 
> > > >> Does anyone know a better solution to fix this problem?
> > > >> 
> > > >> If not, then I am +1 to push it back in, and improve upon it later.
> > > >> 
> > > >> Andy -- is sympy missing some tests, that your library depends on? If
> > > >> so, we should add it into sympy, so that we make sure things don't get
> > > >> broken. Once somebody implements a better solution, we'll simply
> > > >> provide an upgrade path.
> > > > 
> > > > test_priority from that commit was what I was using.  But roughly I
> > > > need multiple dispatch so I can override the dispatch of the algebraic
> > > > operators.  If SymPy doesn't want to support this I can move to the
> > > > pymoblics system.
> > > > 
> > > > -- Andy
> > > > 
> > > >> 
> > > >> Ondřej
> > > 
> > > _op_priority is kind of a bad way to do this, in my opinion, but I
> > > don't know of another way to do it that would be as easy to implement. 
> > > Does anyone have any ideas?  Otherwise, I suggest we use and support it
> > > until we come up with a better system.
> > 
> > The right way is to implement double-dispatch the way it's supposed to
> > be implemented:
> > http://docs.python.org/library/numbers.html#implementing-the-arithmetic-operations
> > 
> > This might not be that hard, if we don't simultaneously have to support
> > _op_priority. Having Expr.__add__ return NotImplemented would already go
> > a long way. I'll give it a try.
> > 
> 
> That doesn't work so well, because of the tangled dependencies between
> Add, Mul, Pow and the Number subclasses operators. I'm now trying to
> straighten this out. Hopefully that rabbit hole isn't as deep as it
> seems...
> 

It seems quite doable, actually. I'll be able to send a pull request in
a day or two, I think.

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

Reply via email to