here it is https://github.com/sympy/sympy/pull/1635
On 1 November 2012 21:39, Stefan Krastanov <[email protected]> wrote: > I started writing it a few hours ago, so there is still no branch. But > I will submit one soon. > > On 1 November 2012 21:35, Matthew Rocklin <[email protected]> wrote: >> I was about to send this. Now I see that you've solved your problem. I'll >> send it anyway in case it's useful. One note. I would recomment do_one over >> chain. >> >> Are you working off of a branch I can see? Perhaps there is a >> strategy-idomatic way to get around your issue. >> >> I would normally do something like >> >> def rule1(expr): >> ... >> def rule2(expr): >> ... >> >> >> big_function = exhaust(top_down(typed({Trace: do_one(rule1, rule2, ...)}))) >> >> >> >> >> On Thu, Nov 1, 2012 at 3:28 PM, Stefan Krastanov >> <[email protected]> wrote: >>> >>> I still think that it would be nice to have them as decorators. >>> >>> For instance I have many typed rules. At the moment I write this numerous >>> times: >>> >>> def my_rule(expr): >>> ... >>> my_rule = exhaust(top_down(typed({Trace: my_rule}))) # to be optimized >>> >>> And I am sure that I will not need it in any other way. >>> >>> Having them as decorators, indeed will not permit getting the >>> undecorated version at runtime, however during refactoring it will be >>> trivial to get it. And I suppose this is when it will be needed. >>> >>> offtopic: I think that the API for `typed` deviates from the "stuff, >>> rule -> rule" signature. >>> >>> On 1 November 2012 20:21, Matthew Rocklin <[email protected]> wrote: >>> > I've thought about this a bit. Yes, strategies could very naturally be >>> > extended to decorators and it would make application more beautiful. My >>> > concern with this is that when you decorate a function you lose access >>> > to >>> > the undecorated form. While it might make the code to solve your >>> > problem-of-the-moment syntactically nicer it fouls up reusability with >>> > different strategies. >>> > >>> > The functions are supposed to be just mathematical logic >>> > The strategies are supposed to be just algorithmic / control logic >>> > >>> > We should be able to mix them freely and we should allow others to mix >>> > them >>> > later. Decoration mixes them but hides the components. Decoration >>> > "complects." >>> > >>> > It makes sense to have the decorators around because you can always >>> > choose >>> > to not use them. I'm afraid that this will encourage bad behavior. >>> > Strategies are sort of a trick to convince everyone to write accessible >>> > sub-functions that can be composed later by others. >>> > >>> > >>> > On Thu, Nov 1, 2012 at 2:07 PM, Stefan Krastanov >>> > <[email protected]> wrote: >>> >> >>> >> I am sorry if this is explained somewhere or already discussed. >>> >> >>> >> Many of the strategies (all of them?) sound like very natural >>> >> decorators on rules. Any plans to support this syntax. It does not >>> >> need to clash with the current one (except for reordering or args). >>> >> >>> >> After all >>> >> >>> >> @f1(arg) >>> >> @f2 >>> >> def func(): pass >>> >> >>> >> is equivalent to >>> >> >>> >> def func(): pass >>> >> func = f1(arg)(f2(func)) >>> >> >>> >> -- >>> >> 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. >>> >> >>> > >>> > -- >>> > 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. >>> >>> -- >>> 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. >>> >> >> -- >> 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. -- 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.
