Is there any document about this behavior in the wiki or the online
help?  I had never encountered this issue, for I had never reused
public names for private definitions, until I was bitten by this.

Can someone put a simple explanation with examples in the dictionary?
Such peculiar behavior of name resolution is important to document.

> On Nov 4, 2016, at 8:40 AM, 'Pascal Jasmin' via Programming 
> <[email protected]> wrote:
> 
> to pass by value/workaround,
> 
>   g f. a 5
> 5
> 
> 
> 
> 
> ________________________________
> From: Henry Rich <[email protected]>
> To: [email protected] 
> Sent: Friday, November 4, 2016 7:40 AM
> Subject: Re: [Jprogramming] stack error or private/public name collision
> 
> 
> Consider:
> 
> 
> g =: ]
> 
> a=:1 :0
> 
> g=.+:
> 
> u y
> 
> )
> 
>    g 5
> 
> 5
> 
>    g a 5
> 
> 10
> 
> 
> inside a, u is defined as g, because verbs are passed by name.
> 
> There is an exception: u v m n x y  are always replaced by their values 
> when they are taken from the execution queue.
> 
> 
> Henry Rich
> 
> 
> 
> 
> 
> 
> On 11/4/2016 5:51 AM, 'Jon Hough' via Programming wrote:
>> I'm not sure what the rule is, but if you do:
>> 
>> g =: ]
>> a =: 1 : 0
>> h =. u
>> g =. +:
>> h y
>> )
>> 
>> g a 1
>> 
>> NB. what is g?
>> g
>> it shows g as ],
>> i.e Global g doesn't get reassigned.
>> 
>> Also,
>> g =: ]
>> a =: 1 : 0
>> g =. u
>> g y
>> )
>> 
>> ^ a 1
>> 
>> NB. what is g?
>> g
>> 
>> shows ],
>> so global g doesn't get reassigned here either. But the g in the line "g y" 
>> is ^ , i.e. a ignores the locally defined g.
>> 
>> Sorry that's not helpful. The dictionary entry for explicit definitions [1], 
>> doesn't seem to have much to say about it.
>> 
>> Interestingly, if you erase g inside the conjunction ([2]), and then assign 
>> local g, you will still get a stack error:
>> 
>> g =: ]
>> a =: 1 : 0
>> (4!:55) <'g'
>> g =. u
>> g y
>> 
>> )
>> 
>> g a 1
>> 
>> 
>> 
>> 
>> [1] http://www.jsoftware.com/help/dictionary/d310n.htm
>> [2] http://www.jsoftware.com/help/dictionary/dx004.htm
>> --------------------------------------------
>> On Fri, 11/4/16, Xiao-Yong Jin <[email protected]> wrote:
>> 
>>  Subject: [Jprogramming] stack error or private/public name collision
>>  To: [email protected]
>>  Date: Friday, November 4, 2016, 1:52 PM
>> 
>>  Is the following a bug?
>> 
>>     g=:]
>>     a=:1 :0
>>  g=.u
>>  g y
>>  )
>>     g a 1
>>  |stack error: g
>>  |       g y
>>     a=:1 :0
>>  f=.u
>>  f y
>>  )
>>     g a 1
>>  1
>> 
>>  ----------------------------------------------------------------------
>>  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
> ----------------------------------------------------------------------
> 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