The workaround should be a4 =. 1 : 'if. do. y+val__u else. u end.'
Henry Rich > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Henry Rich > Sent: Saturday, April 01, 2006 6:57 AM > To: 'Programming forum' > Subject: RE: [Jprogramming] val__u in adverb and conjunction > > It looks like an error in the interpreter, but one you can > work around. > > The interpreter scans the text of the entity looking for the variables > m. n. u. v. m n u v > and if it doesn't find any, it assumes that x and y actually mean > u and v. It apparently doesn't recognize val__u as being a reference > to u, so it translates x and y into u and v; in a1, for example, this > makes y undefined, because there is no v operand to the conjunction. > > Before J6 you would have had to have a line like > u =. u. > which would alert the interpreter that u. is used. Now you have > to make sure that u or v appears by itself somewhere in your > entity. One way is > > a4 =. 1 : 'if. do. u else. y+val__u end.' > > Maybe Gosi was right, and we should get rid of the old-form > modifiers for J6. > > Henry Rich > > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of Mikl Kurkov > > Sent: Saturday, April 01, 2006 6:15 AM > > To: [email protected] > > Subject: [Jprogramming] val__u in adverb and conjunction > > > > I want to use numbered locale as a parameter for adverb and > > conjunction. > > But I stucked with problem, that sometimes I'm allowed to use > > val__u, and > > sometimes not. > > I worked out that this can be avoided by assigning u value to > > another > > local variable. > > But I want to understand why it's impossible to just use val__u. > > > > NB. Test code > > coclass 'test' > > create =: 3 : 'val =: 20' > > destroy =: codestroy > > > > cocurrent 'base' > > t =: '' conew 'test' > > a1 =: 1 : 'y + val__u' > > a2 =: 1 : 'y + val__u1 [ u1 =. u' > > c1 =: 2 : 'y + val__u + val__v' > > c2 =: 2 : 'y + val__u + v' > > > > t a1 10 > > |value error: y > > | y+val__u > > > > t a2 10 > > 30 > > > > (t c1 t) 10 > > |domain error: c1 > > | y +val__u+val__v > > > > NB. but next is working > > (t c2 10) 30 > > 60 > > > > NB. and this one works too > > c3 =: 2 : 'y + u + val__v' > > > > (10 c3 t) 30 > > 60 > > > > NB. but this not > > c4 =: 2 : 'y + val__v' > > (10 c4 t) 30 > > |domain error: c4 > > | y +val__v > > > > So can you explain this behaviour > > and is it better to avoid using something like val__u in > adverbs and > > conjunctions? > > > > -- > > Mikl > > > ---------------------------------------------------------------------- > > 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
