The rules are given in the parsing table https://www.jsoftware.com/help/dictionary/dicte.htm

Henry Rich

On 6/1/2021 6:53 PM, 'Pascal Jasmin' via General wrote:
I see.  It has to parse the value of COUNTER at parse time? for:

COUNTER [ CNT@{. 1 2 3 [ COUNTER =: 0

but It is harder to see why the same rule wouldn't apply to the left COUNTER 
here:

COUNTER [ ] CNT@{. 1 2 3 [ COUNTER =: 0

1

If COUNTER needs to be checked for whether it is a conjunction, result would be 
a n in first, and a v n in second (both illegal).  The conjunction possibility 
is probably not the actual reason.

'any v n' requires to see what any is.  Because it could be x v(dyad) n, or v 
v(monad) n.  Execution of middle v depends on knowing which.

'any v v n' can always execute the rightmost v before having to look at the 
left any.

But the first example actually is 'any v v n' in its longer form, so I still don't get 
why second version "works"


On Tuesday, June 1, 2021, 06:19:25 p.m. EDT, Raul Miller 
<[email protected]> wrote:





   CNT =: 3 : 'y [ COUNTER =: >: COUNTER'
   COUNTER [[ CNT@{. 1 2 3 [ COUNTER =: 0
1

In the general case, COUNTER might have instead been a conjunction,
which would have meant that the [ to the left of CNT in your
expression would have been an argument to that conjunction, instead of
being a simple verb which ignores the value from CNT.

I  hope this helps,



--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to