Chris Angelico wrote:
> On Mon, Sep 23, 2019 at 10:42 AM Andrew Barnert via Python-ideas
> python-ideas@python.org wrote:
> >
> > On Sep 22, 2019, at 02:08, Nutchanon Ninyawee m...@nutchanon.org wrote:
> > >
> > Link is a language feature that allows multiple
> > variable names to always refer to the same underlying object define in a 
> > namespace.
> > For now, if the variable a link with b. I will denote as a >< b or link('a',
> > 'b')
> > a = 2
> > a >< alpha # link 'a' with 'alpha'
> > b = 3
> > print(balpha) # print 9
> > alpha = 3
> > print(ba) # print 27
> > How would this work? I can think of a few options, but they all either 
> > badly slow
> > down every variable use, don’t work with locals, or require >< to be 
> > handled at
> > compile time. Do you have at least a sketch of how this works?
> > Since there's nothing in the OP's article about implementation, I'm
> going to assume that the OP hasn't actually planned any, and is just
> looking at syntax and semantics. So there's plenty of flexibility to
> discuss potential implementations.
> Currently, Python has a default set of rules for how to interpret the
> meaning of a bare name, but you can alter that with "global" and
> "nonlocal" declarations. Aliasing could be handled exactly the same
> way: at compile time, interpret this name as meaning the same as that
> name. It would be more Pythonic to use a keyword rather than the "><"
> glyph (even while typing it for that example, my fingers autocorrected
> to "<>", which would be syntactically valid but usually meaningless -
> a dangerous trap), so let's suppose that we can use the word "alias"
> for this.
> The trouble is that the "alias-ness" of it needs to be able to be
> stored in a namespace somehow. The class example implies that
> "program" is an alias for "code" in some way that means that can be
> stored in the class's dict, and doesn't interfere with descriptor
> protocol for the function (which, I think, implies that it cannot
> itself be a descriptor). The same applies to monkeypatching Selenium
> (in the given example, I honestly think the original name is better,
> but that's just a matter of the example); the alias has to be able to
> be stored in the instance's dict, and then looked up.
> In some cases, it may be possible to translate "x.y >< z" into
> something akin to "type(x).y = property(lambda: z, lambda v: z=v)"
> (yes, I know, a lambda function can't assign like that, but this is
> compiler magic so it can do what it likes). Unfortunately that would
> apply to ALL instances of that type - probably not a problem in the
> OP's Selenium example, but a fairly major problem when working with a
> generic class (ie where type(x) is type).
> Not sure where this leads us, though, as instance properties have been
> proposed and rejected before.
> ChrisA

Both the symbol "><" and keyword "link" are open for changes. 
In my idea, the link idea is closer to '=', more than any built-in functions. 
I see, this symbol '~' also a possible alternative. 
'alias' is a good keyword. but, the first thing that comes to my mind is 'bash 
alias' 
which is not a very accurate behavior for.
```bash
$ a=1 
$ alias b='a'
$ b=2
$ echo $a # print 1
```
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/GWN6ISJGZ6LPH3MWBB33WPMU5BKIQ5MU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to