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.

Reply via email to