Is it worth for me to mention about the Protosym's architecture, in order 
to strengthen my proposal ? or do I need more contributions in sympy 
repositories.

On Sunday, March 24, 2024 at 4:29:40 AM UTC+5:30 Samith Kavishke wrote:

> Hi, 
> Thank you, Francesco for your valuable insights. I have attached my 
> current draft of GSOC 24 proposal. Can you help me with feedbacks for the 
> proposal. 
>
>
> On Tuesday, March 19, 2024 at 8:15:07 PM UTC+5:30 Francesco Bonazzi wrote:
>
>> No, no parsers are needed. Just a tree traversal for-loop. It's already 
>> implemented:
>>
>>
>>    - iterator 
>>    
>> <https://github.com/sympy/sympy/blob/94305f1976f84473f87d1b19d66ed9031b0c7e1f/sympy/utilities/matchpy_connector.py#L90>
>>    - iterator size 
>>    
>> <https://github.com/sympy/sympy/blob/94305f1976f84473f87d1b19d66ed9031b0c7e1f/sympy/utilities/matchpy_connector.py#L99>
>>
>> As you see, in the current implementation we need to use 
>> @op_iter.register... because "op_iter" is a MatchPy function that does not 
>> exist in SymPy... With @op_iter.register we can extend it to a SymPy 
>> object. The problem is:
>>
>>    1. @op_iter.register is an almost hackish way to do it, it messes up 
>>    with the class inheritance. We need something easier to use.
>>    2. The .register method defines the iterator on a class. We may have 
>>    cases in which we would like to have different iterators for the same 
>>    class... so it shouldn't be a class method.
>>    
>>
>> On Monday, March 18, 2024 at 11:20:10 p.m. UTC+1 samithkar...@gmail.com 
>> wrote:
>>
>>> I think, I understood the point you are making. If we are going to 
>>> redefine the tree structure in matchpy using overridable methods, does that 
>>> mean we have to use a parser to translate the sympy object type to matchpy 
>>> or are there any better way to handle the situation.  
>>> On Saturday, March 16, 2024 at 8:32:03 PM UTC+5:30 Francesco Bonazzi 
>>> wrote:
>>>
>>>> I suggest to start the unit tests of MatchPy in debug mode and follow 
>>>> the tree traversal to get some more insight. Indeed, the code is quite 
>>>> complicated, but the debugger may help. MatchPy also provides a tool to 
>>>> dump the state into a GraphViz dot file.
>>>>
>>>> The idea is that matchpy_connector should not use all those ".register( 
>>>> )" methods, it should not have objects subclassing MatchPy objects 
>>>> (currently there is Wildcard).
>>>>
>>>> On Saturday, March 16, 2024 at 1:52:55 p.m. UTC+1 
>>>> samithkar...@gmail.com wrote:
>>>>
>>>>> Hi,
>>>>> Still I am in the process of understanding the matchpy code base.
>>>>> at the moment I understand that, 
>>>>>
>>>>>    - Isinstance logic should replace to overridable method or any 
>>>>>    preferred way ( wrappers around classes new classes also possible 
>>>>> without 
>>>>>    changing the existing code). 
>>>>>    - __iter__ logic should change due to the tree traversal must 
>>>>>    change accordingly, because it is rely on the inheritance. 
>>>>>    - replace method in the matchpy connector should change because it 
>>>>>    is replication of same code twice.
>>>>>    - Enhance the capability of matchpy_connector, because still does 
>>>>>    not have the capability of solving calculus, matrices and more 
>>>>> advanced 
>>>>>    problems.
>>>>>
>>>>> what are the other things that might affect if we add overridable 
>>>>> method to Expressions? any suggestions for me to refer.
>>>>> On Wednesday, March 13, 2024 at 2:04:20 PM UTC+5:30 Francesco Bonazzi 
>>>>> wrote:
>>>>>
>>>>>> On Wednesday, March 13, 2024 at 8:13:27 a.m. UTC+1 Aaron Meurer wrote:
>>>>>>
>>>>>> As far as we can tell, SymPy is the only thing that uses MatchPy, 
>>>>>> outside of the specific research software from that research group 
>>>>>> that it was developed for. 
>>>>>>
>>>>>>
>>>>>> Indeed, MatchPy is probably very underappreciated. Its developers 
>>>>>> haven't really advertised it enough.
>>>>>>  
>>>>>>
>>>>>> If making MatchPy more SymPy specific eases 
>>>>>> the development burden, we should do that, especially if we are going 
>>>>>> to fork it anyway. I think the core of it does need to remain 
>>>>>> independent of SymPy's types, especially if we want to try to write a 
>>>>>> Rust backend. 
>>>>>>
>>>>>>
>>>>>> I would still make an attempt at keeping it generic. The main issue 
>>>>>> is removing all "isinstance( ... )" and "__iter__" statements in the 
>>>>>> expression tree traversal algorithms of MatchPy and replace them with 
>>>>>> more 
>>>>>> generalizable statements. I'm confident this can be done and that we can 
>>>>>> still keep MatchPy generalizable to other libraries.
>>>>>>
>>>>>

-- 
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 sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/1c5c0e08-ba4c-49bf-9bf0-51f0398ddad6n%40googlegroups.com.

Reply via email to