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

Reply via email to