Using locale gives some differance also using mapped files is not exactly the same as ordinary nouns even for most practical uses they are.
Sharing data between users or processes make it necessary as well as the sizes. As usual you better know what you intend to do and not mix local, locale, map, global unless you know what you are doing. Keep local vars well different from global etc. On 19 Jun 2014 20:22, "Don Guinn" <[email protected]> wrote: > You can refer and modify global names that are shadowed by local names by > adding the locale to the name. > > a=:1 > > y=:3 > > lg=: 3 : 0 > > smoutput a,y,a__,y__ > > 'a y a__ y__'=.4 5 6 7 > > a,y,a__,y__ > > ) > > lg 2 > > 1 2 1 3 > > 4 5 6 7 > > a,y > > 6 7 > > > Notice that adding the locale to the name makes =. work like =: . > > > On Thu, Jun 19, 2014 at 12:46 PM, Raul Miller <[email protected]> > wrote: > > > I am going to disagree with you here. > > > > The reason =: after =. is an error is because most of the time when that > > happens it's a mistake. So informing the user of the mistake is the best > > language design choice for that case. > > > > "Not breaking user code" is a virtue when making changes in a language, > but > > it's not the only relevant issue. > > > > Thanks, > > > > -- > > Raul > > > > > > > > On Thu, Jun 19, 2014 at 11:53 AM, 'Pascal Jasmin' via Programming < > > [email protected]> wrote: > > > > > currently the following code generates a domain error at the ('f') =: y > > > line. > > > > > > testlocal =: 3 : 0 > > > f =. 33 > > > assign =. 4 : '(x) =: y' > > > > > > 'f' assign f + y > > > > > > ('f') =: f+y > > > NB. f =: f+y > > > f > > > ) > > > > > > testlocal 2 > > > |domain error: testlocal > > > | ('f') =: f+y > > > f > > > 35 > > > > > > the commented line also generates the same error. > > > > > > My suggestion is that all of the above code lines should leave the > global > > > variable f unchanged. The user benefit is being able to use external > > > functions that create assignments (can only use =:) with the > "shaddowed" > > > local variable. Includes benefits of modifying x,y,u,v while only > > > mentioning the parameter once in a statement, and possibly allowing > > changes > > > to values within tacit expressions without relying on global/external > > > variables. > > > > > > I claim that there would not be any impact to existing user code, > because > > > =: after =. is currently a domain error, and calling an external > > assignment > > > function on a name that duplicates a local assignment is more likely to > > be > > > unintended behaviour rather than a clever way around the domain error > > that > > > would occur under direct global assignment. Advice to function writers > > to > > > name their local variables differently than the globals they access is > > > under their control. Though the simple convention of not naming local > > > variables to the same names as accessed globals is quite sufficient, an > > > additional workaround could be made that a fully localed name would > > access > > > the global. > > > ---------------------------------------------------------------------- > > > 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
