It's basically a consequence of the parsing rules: https://www.jsoftware.com/help/dictionary/dicte.htm
In this case, when given 'abc' by itself, your J session tries to return the value, finds none, so produces an error. However 'xyz abc' parses as a hook, so the "value" returned is its linear representation. By default, the individual names in compound verbs don't get expanded until evaluation, so no parser error. For sleuthing out answers to parsing issues, the trace facility is really quite nice: require 'trace' trxyzce 'xyz abc' --------------- 6 Bident ----- xyz abc xyz abc ============================== NB: In J's parser parlance, "bident" means hook and "trident" means fork. Cheers, Arnab Chakraborty <damd...@gmail.com> wrote: > Dear all, > > Here is a behavior that I noticed only recently, and it puzzles me a > lot: > > Let's say abc and xyz are not defined in my J session, and type just abc > by itself in a line. Of course, I get a value error. But if I type > > xyz abc > > then J does not produce any error, but simply echos back what I have typed! > I expected that J would start executing from the right, encounter abc, and > produce a value error. If I now define abc (say abc=. 0), then > > xyz abc > > produces a value error (expected) about xyz. > > But why does J become silent in presence of multiple undefined symbols? > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm