On Tue, May 28, 2019 at 10:38 PM Chris Angelico <ros...@gmail.com> wrote: > > On Wed, May 29, 2019 at 6:30 AM Yanghao Hua <yanghao...@gmail.com> wrote: > > > > > You do realise that repeatedly avoiding the question "what problem do > > > you think you are solving?" does not convincingly make the case that > > > there is a problem to be solved, don't you? > > > > It might be that I am not good enough yet to present it in a way for > > some of you to better comprehend it. But I do see positive feedbacks > > too. I plan to stop this discussion here and make a toe-to-toe > > comparison how it looks like without assignment overloading, how it > > looks like with assignment overloading, and how it compares with other > > languages like verilog and Scala/Chisel, and in the meantime to look > > into some corner cases to make sure the proposed solution can cover > > all situations. > > > > To repeat what the problem do I think I am solving? A variable, that > > behaves like an integer (e.g. all normal integer ops should just > > work), but has a different assignment behavior, such that it can be > > used to develop equally good hardware descriptions. > > So what you want is for this code to behave very very weirdly: > > a = thing() > a = other_thing() > a = another_thing() > > Because if one of the things redefines assignment, the subsequent ones > are going to do something different. > > I recommend sticking with something that's deliberately and > consciously namespaced. Descriptors give you a convenient way to do > this with dot notation, and a custom object with a __setitem__ method > lets you use bracket notation. > > stuff = thing_collection() > stuff.a = other_thing() > stuff.a = another_thing() > > This is much clearer, because you can see a distinct difference > between initializing the thing and making the thing do stuff. > Alternatively, using a different operator works: > > a = thing() > a += other_thing() > a += another_thing() > > because augmented assignment IS handled by the target object. (I don't > recommend abusing <= for this, as people and linters will get very > surprised by that. But that would also work.) > > Redefining assignment is a minefield in the languages that support it. > Please can you seek a better way to do this? > > I'm done posting now. If you're not listening, I'm not going to keep talking.
I am listening of course, I thought we could give it a pause, but same question as before pops up continuously, without building on top of my previous answers, and doesn't even look like what I was proposing. To re-iterate, the overloadable assignment operator I was proposing is not "=", and not "<=". it was "<-", "->", or "<==" "==>" (thanks Ricky for this proposal). _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/