On Wed, Jul 24, 2013 at 6:08 PM, Cedric Blancher
<[email protected]> wrote:
> On 24 July 2013 18:04, David Korn <[email protected]> wrote:
>> cc:  [email protected]
>> Subject: Re: [ast-users] _ doesn't refer to the correct object.
>> --------
>>
>>> In this type, I can't think of any way to refer to "obj" from within 
>>> "x.get".
>>> _ should point to "obj" in this context, not "obj.x".
>>>
>>>     #!/usr/bin/env ksh
>>>
>>>     typeset -T Type=(
>>>         typeset -h 'This will be a property.' x
>>>         integer -h 'This will be the backing field for x.' y=5
>>>
>>>         function x.get {
>>>             # Huge problem here because _ refers to x,
>>>             # we can't access anything.
>>>             ((.sh.value = ++_.y))
>>>         }
>>>     )
>>>
>>>     Type obj
>>>     print -r "${obj.x}" "${obj.x}" # prints "1 2"
>>>
>>> The above should be equivalent to the follwing Python code:
>>>
>>>     #!/usr/bin/env python3
>>>
>>>     class Type(object):
>>>         def __init__(self):
>>>             self.y = 5
>>>
>>>         @property
>>>         def x(self):
>>>             self.y += 1
>>>             return self.y
>>>
>>>     obj = Type()
>>>     print(obj.x, obj.x) # prints "6 7"
>>>
>>>
>>> Or the following C# code:
>>>
>>>     using System;
>>>
>>>     namespace Program {
>>>         public class Type {
>>>             private int y = 5;
>>>             public string x {
>>>                 get {
>>>                     y++;
>>>                     return this.y.ToString();
>>>                 }
>>>             }
>>>         }
>>>
>>>         public class Program {
>>>             static int Main(string[] argv) {
>>>                 var obj = new Type();
>>>                 Console.WriteLine("{0} {1}", obj.x, obj.x); // prints "6 7"
>>>                 return 0;
>>>             }
>>>         }
>>>     }
>>>
>>> --
>>> Dan Douglas
>>
>> I think that python has this right.  This should prnt 6 7.
>> I will modify _ so that for types subvariables, it will reference the type.
>>
>> This way neither _._ or __ is needed.
>
> *protest*

Please move the discussion into a different mail thread. Otherwise
this idea gets sunk by the other issue (a, a.x vs _) here.

>
> var.__ has a different use case. var.__ is to access the parent of a
> variable in a variable tree, let it be a compound variable or nested
> type variables.

+1

I agree that var.__ is a novel idea which solves a lot of problems for
languages which do not have something like C++ pointers.

Irek
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to