I would use [[ instead of [
J dictionary didn't say much on side effects.
On Wed, Jun 2, 2021, 7:56 AM 'Pascal Jasmin' via General <
gene...@jsoftware.com> wrote:
>
>
>
>
>
>
>
> On Tuesday, June 1, 2021, 07:40:22 p.m. EDT, Henry Rich <
> henryhr...@gmail.com> wrote:
>
>
> first is
>
> noun
On Tuesday, June 1, 2021, 07:40:22 p.m. EDT, Henry Rich
wrote:
first is
noun verb verb(v c v) noun NB. parses all 4 terms.
second is
n v v v n NB. parses rightmost 4 terms.
And when that gets reduced to n v v n the rightmost n has already been executed
along with its side
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
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,
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
CNT =: 3 : 'y [ COUNTER =: >: COUNTER'
COUNTER [ CNT@{. 1 2 3 [ COUNTER =: 0
0
COUNTER
1
workaround
3 :'COUNTER' [ CNT@{. 1 2 3 [ COUNTER =: 0
1
J is being too smart in short circuiting constant [ at console (jqt)