> From: Robert O'Boyle
> 
> I have come across a feature of J that I didn't expect. When I add
> rows of a matrix, I use +/"1
> 
>    a
> 1 2 3 4
> 1 2 3 4
> 1 2 3 4
> 
>    +/"1 a
> 10 10 10
> 
> And columns,
> 
>   +/"2 a
> 3 6 9 12

Although the result is the same as summing the columns, I suspect you are 
misunderstanding rank in this case. Note to start with that not using rank:
  +/ a
3 6 9 12

Will give you the same result. The adverb insert ( / ) will place the verb to 
its immediate left between each _item_ of the noun to its right. The noun ( a ) 
is rank 2, and is therefore a list of rank 1 items. ( +/ a ) will place + in 
between each item of ( a ), i.e.
   1 2 3 4 + 1 2 3 4 + 1 2 3 4
3 6 9 12

You can think of the rank conjunction as a way of feeding chunks of a noun on 
its right, to the verb on the left. So ( +/"1 a ) will send rank 1 chunks 
(vectors) of ( a ) to ( +/ ). i.e. similar to:
   (+/ 1 2 3 4) , (+/ 1 2 3 4) ,: (+/ 1 2 3 4)
Insert will now place + between each item of the list:
  (1+2+3+4) , (1+2+3+4) ,: (1+2+3+4)   
 
If you use ( +/"2 a ) then you are saying you want to feed ( a ) to ( +/ ) in 
rank 2 chunks. Since ( a ) is only rank 2 (a matrix) this is the same as 
sending all of ( a ) to ( +/ ) at once. i.e. the same as ( +/ a ).

> By chance, I happened to 'misplace' insert and got an unexpected result

Note also that the sentence ( a *"1/ b ) uses dyadic / and so is "table" not 
"insert".

I see Bob has replied along similar lines, I certainly endorse his 
recommendation of Henry's book!

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

Reply via email to