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
