Rick,

On 24.11.2013 18:23, Rick McGuire wrote:
> This has nothing to do with method names, only with class definitions and 
> lookups. Your example is
> already something that works with method invocations.  And "an environment 
> literal string" could
> potentially cause breakage with existing programs as that has an already 
> defined meaning today. 
oh, o.k., thank you!

In that case I would prefer #2 as well.

---rony


>
>
> On Sun, Nov 24, 2013 at 11:26 AM, Rony G. Flatscher <rony.flatsc...@wu.ac.at
> <mailto:rony.flatsc...@wu.ac.at>> wrote:
>
>
>     On 24.11.2013 17:06, Rick McGuire wrote:
>>     Ran into this little glitch this morning with a program I was writing.  
>> I created a class
>>     that started with the characters "3D", and was getting an error when i 
>> tried to instantiate
>>     it because the corresponding environment symbol resolved to a string 
>> value.  I opened bug
>>     1212 to address this. 
>>
>>     One of the first things I encountered was the docs for environment 
>> symbols, which requires
>>     that the first character not be a digit (section 1.13.6 in the 
>> reference).  So, in a sense,
>>     this is working correctly, although with a high astonishment factor.  
>> The ::class directive
>>     does not place any restrictions, allowing you to create classes that you 
>> can't look up via
>>     environment symbols.  For example, 
>>
>>     say .context~package~classes["INVALID NAME"]~new
>>     say .3dglasses~new
>>
>>     ::class 3DGlasses
>>     ::method init
>>       say "Creating 3D Glasses"
>>
>>     ::class "invalid name"
>>     ::method init 
>>       say "Creating a funny instance"  
>>
>>     It seems like a reasonable thing to create a class name like 3DGlasses, 
>> but the current
>>     definition of environment symbols pretty much precludes this.  I see a 
>> number of
>>     possibilities here; 
>>
>>     1)  Do nothing other than add some documentation to the ::CLASS 
>> directive explaining the
>>     implications of the name choice. 
>>
>>     2)  Change the definition of environment symbol to a restriction on the 
>> second character to
>>     "the remaining part of the symbol cannot be a valid Rexx number'. 
>>
>>     3)  Implement restrictions on the ::CLASS directive such that the name 
>> must be a valid
>>     environment symbol. 
>>
>>     I'm not terribly fond of solution 3), I'm sort of in favor of 2, but can 
>> live with 1. 
>>
>>     Thoughts?
>
>     How about allowing an "environment literal string" (a leading dot, 
> immediately followed by a
>     literal string) which would yield the value to look up in the 
> environment? The string would be
>     uppercased (like in the method name case) and then used for a lookup in 
> the environment.
>
>     This would follow along the lines of the definition of a method name, 
> which usually is a
>     symbol, however it also can be a literal string (that seems to be 
> uppercased), e.g.:
>
>         o1=.test~new
>         o1~"one with non-symbol chars ..."
>
>         ::method "one with non-symbol chars ..."
>           say "method 'one with non-symbol chars ...' could be invoked"
>
>     The above program works and yields:
>
>         method 'one with non-symbol chars ...' could be invoked
>
>     ---
>
>     Applying "environment literal strings" to your example might then look 
> like:
>
>         say ."3dglasses"~new
>
>         ::class 3DGlasses
>         ::method init
>           say "Creating 3D Glasses"
>
>
>     This would allow to express any class name that is not a symbol (even 
> ones that contain
>     blanks), keeping the current definition of "environment symbol", yet 
> being able to refer to
>     any class name via the environment.
>
>     ---rony
>

------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to