Hi, please consider this:

   ((0,:2),:(2,:2)) (< @: +: @: ]);.0 i. 4
+---+---+
|0 1|2 3|
+---+---+
   ((0,:2),:(2,:2)) (< @: (+/) @: ]);.0 i. 4
+---+---+
|0 1|2 3|
+---+---+
   ((0,:2),:(2,:2)) (< @: (\:~) @: ]);.0 i. 4
+---+---+
|0 1|2 3|
+---+---+


No issues in 8.07; and a bug (that's what I'd call it) in 9.03 and 9.04.
Looks like it happens if the left arg has multiple ranges; and a verb to
apply is composed with "same" and "box" verbs as first and last in
sequence. But it's at 1st glance only. Sometimes omitting parentheses would
help (which clearly means parsing issue?). All these produce expected
output:

   (2,:2) (< @: +: @: ]);.0 i. 4
+---+
|4 6|
+---+
   ((0,:2),:(2,:2)) (] @: +: @: ]);.0 i. 4
0 2
4 6
   ((0,:2),:(2,:2)) (< @: +/ @: ]);.0 i. 4
+-+-+
|1|5|
+-+-+
   (0,:2) (< @: (\:~) @: ]);.0 i. 4
+---+
|1 0|
+---+
   ((0,:2),:(2,:2)) (] @: (\:~) @: ]);.0 i. 4
1 0
3 2
   ((0,:2),:(2,:2)) (< @: (\:~));.0 i. 4
+---+---+
|1 0|3 2|
+---+---+


While "why would you want to use the ']' here?" would be reasonable to ask,
but, in the end, syntax is either correct or not. In fact, I was testing
all kinds of different constructs investigating why multi-threaded
operation (with "t.") on subarrays is so much slower than expected,
although it's perhaps totally unrelated to what's discovered above.

Best regards,
Vadim
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to