(a,a=.?@#) is a verb, namely (?@# , ?@#). In this expression a is set to the _verb_ ?@# and then train (a,a) is evaluated.
In the second case a is set to the _result_ of ?@# and then (a,a) is evaluated. To do this tacitly: (] , ]) @ (?@#) or more concisely ,~@?@# or equivalently (how I would write it) 2 $ ?@# As Henry said, to store an intermediate value in a verb's evaluation for use _after_ it's application, you must use an explicit verb, for example: ,~ @ (3 : 'a=: y') @ (?@#) Cheers, Louis > On 21 Nov 2019, at 03:26, Nimp O <tr...@outlook.com> wrote: > > Hello, simple question. > > This behaviour surprised me. > > (a,a=.?@#)'01234' > 2 4 > > 3 : 'a,a=.?@#y' '01234' > 1 1 > > Why a is not equal to a in the first case? How can I save the roll as an > intermediate result in the tacit version? > Thanks. > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm