On Thu, Sep 19, 2013 at 12:54 PM, F. B. <[email protected]> wrote:
>
> On Thursday, September 19, 2013 8:08:09 PM UTC+2, Aaron Meurer wrote:
>>
>> I don't understand everything that the Mathematica syntax is doing
>> there, but is this the same as
>>
>> a = Wild('a', exclude=[x])
>> b = Wild('b', exclude=[x])
>> expr.replace(Integral(cos(a + b*x), x), sin(a + b*x)/b)
>
>
> Oh well, I missed that.
>
>
>>
>>  I guess what isn't supported so well is making x itself be a Wild
>>
>> representing a Symbol.
>>
>> What I would do is extend Wild to accept a callable, which can be used
>> to determine if an expression should match it. So for instance, you
>> could match only Symbols with Wild('x', param=lambda i: isinstance(i,
>> Symbol)) (what should "param" be called?). The exclude parameter would
>> be a special case of this with lambda i: not i.has(exclude). We could
>> also add a special case for isinstance to avoid having to type lambda
>> in the common case.
>>
>> One could then do
>>
>> x = Wild('x', isinstance=[Symbol])
>> a = Wild('a', exclude=[x])
>> b = Wild('b', exclude=[x])
>> expr.replace(Integral(cos(a + b*x), x), sin(a + b*x)/b)
>>
>> and it would do the right thing, for instance, for expr =
>> Integral(cos(1 + 2*t), t).
>>
>
> Well, there is a discussion here about a C++ Sympy core, so I think that we
> should avoid commands such as isinstance, which are proper of Python, as it
> would be hard to port them into C++.  What about:
>
> x = Wild('x', atom=True, name='x')
>
> This is easier to port to the C++ core.

I think that's just a syntax, so it shouldn't matter.

Ondrej

>
>> The question is how hard it is to make this work with the pattern
>> matching algorithm that is currently implemented.
>
>
> Good question, I have a bad feeling about that.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sympy.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to