Thanks for writing a long reply.  I think it is better for us if I can
convince you that your solution does not work before discussing the
question about why.

I've tried to rename my code so it should appear better to your standard.

in_z_=:2 :'(u`'''' ,&(,&''_''@:,@:>) n)~'  NB.accepts global named verb

aGlobalName=:0
verbUsesAGlobalName=:3 :0
  aGlobalName + y
)
adv=:1 :0
  echo u`''
  u y
)
f=:3 :0
  C=.conew'base'
  aGlobalName__C=:2
  z=.verbUsesAGlobalName in C adv 0
  codestroy__C''
  z
)
fMiller =: 3 : 0
 s =. coname ''                    NB. save current locale
 C =. conew 'base'
 aGlobalName__C=:2
 cocurrent > C
 v =. verbUsesAGlobalName f.
 cocurrent > s                     NB. restore current locale
 v adv 0
)

Now in J session,

   f''
┌──────────────────────┐
│verbUsesAGlobalName_0_│
└──────────────────────┘
2
   fMiller''
┌─────────────────────────────────┐
│┌─┬─────────────────────────────┐│
││:│┌─────┬─────────────────────┐││
││ ││┌─┬─┐│┌─┬─────────────────┐│││
││ │││0│3│││0│  aGlobalName + y││││
││ ││└─┴─┘│└─┴─────────────────┘│││
││ │└─────┴─────────────────────┘││
│└─┴─────────────────────────────┘│
└─────────────────────────────────┘
0

As to why, short answer: hiding names for global states that are only useful 
for a few verbs and avoid name clashing.

> On Apr 24, 2017, at 11:31 AM, Raul Miller <[email protected]> wrote:
> 
> I didn't read your code, because of how it was formatted when I
> received it. But that mostly probably means that I should have taken
> responsibility to reformat it. Thus:
> 
> verbInClass_SomeClass_ =: plus
> plus_SomeClass_ =: +
> adv =: /
> 
> NB. then how about this ?
> 
> f =: 3 : 0
>  s =. coname ''                    NB. save current locale
>  C =. conew 'SomeClass'
>  cocurrent > C
>  v =. verbInClass f.
>  cocurrent > s                     NB. restore current locale
>  v adv y
> )
> 
> But the real question should be: why would you want to do anything like this?
> 
> Conceptually speaking, locales should be used as "modules" where
> administrative needs put different people on different tasks. The
> class / object system then allows their work to be combined - perhaps
> not efficiently, but reducing the name conflict issues to a relatively
> manageable level. But that just justifies direct locale references.
> 
> The indirect locale reference thing doesn't have this justification.
> The only places I have used it have been in the implementation of
> specifications which were designed for other programming languages.
> The resulting code tends to be extremely inefficient, but that tends
> to not matter for those kinds of problems.
> 
> Which leads back to the question: why would you want to do this?
> 
> We need some practical use cases, I think, so that's really not a
> rhetorical question, though I suppose it also might have some
> rhetorical value...
> 
> For now, as other people have indicated, the resulting complexity
> (from the language not internalizing support for this issue) seems
> manageable in most cases, but it does require some detailed thought
> and a careful understanding of the differences between names
> (references) and values (an issue which tends to expose "painful"
> differences across any pair of languages).
> 
> Or, that's my current opinion.
> 
> Thanks,
> 
> -- 
> Raul
> 
> 
> On Sun, Apr 23, 2017 at 1:37 PM, roger stokes <[email protected]> 
> wrote:
>>   NB. Suppose we have:
>> 
>> 
>> verbInClass_SomeClass_ =: plus
>> 
>> plus_SomeClass_ =: +
>> 
>> adv =: /
>> 
>> 
>> NB. then how about this ?
>> 
>> 
>> f =: 3 : 0
>> 
>> s =. coname ''                    NB. save current locale
>> 
>> C =. conew 'SomeClass'
>> 
>> cocurrent > C
>> 
>> v =. verbInClass f.
>> 
>> cocurrent > s                     NB. restore current locale
>> 
>> v adv y
>> 
>> )
>> 
>> 
>> f 1 2 3
>> 
>> 6
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to