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
