Henry, I am not sure if your explanation really contributed much to my understanding, but I really appreciated your explanation. I had not clicked on the resulting nouns in dissect until you mentioned that, but the result did not really enlighten me, either. You have every reason to be proud of your result and I am thoroughly enjoying reflecting on it.
I think I did not understand that the rank of rank of rank is different from verb2@verb1@verb0 in that the result or verb0 must conform with the needs of verb1, etc., in a way that is unnecessary for rank of rank. When that insight finally popped into my brain, I elected to use ranks of boxing of nouns to explore more the intermediate stages of rank of rank. This lead to the following sequence of expressions, which does not exactly demonstrate the steps, but has helped me. The expressions attempt to build up the ranks in steps. a ,&<"1 2 b a ,&<"1 each/@(,&<"1 2) b a */ each/"0 1 each@(,&<"1 each/@(,&<"1 2)) b I wonder if this approach can be generalized especially if it is correct. --- (B=) > On Oct 15, 2017, at 10:18 PM, Henry Rich <[email protected]> wrote: > > Gee, dissect works for me. But about all it shows is what input cells go > into a result cell. Repeated clicks on the result take you deeper into the > rank nesting. > > The overall idea of kr2 is, 'Get the result atoms in the right order, then > reshape to an array'. The part on the right gets the result atoms into the > right order. > > And what is that order? Look at a Kronecker product, and you see that the > first row is the first row of b multiplied by the atoms of the first row of a > in turn; the second row is the second row of b times the atoms of the first > row of a in turn... etc until b is exhausted, creating an 'a-group'; then > repeat with the second row of a times rows of b... repeat till a is exhausted. > > The expression *"0 1"1"1 2 thus is > > x V1 " 1 2 y where x and y are tables > apply V1 on each row of x against all of y > x V2 " 1 y where x is a row and y is a table > apply V2 repeatedly on successive rows of y, with x staying constant > x * "0 1 y where x and y are rows > create the multiplication table of x and y: one row of result for each atom > of x > > The innermost operation creates one row of the final result (after reshaping). > The middle operation creates one a-group; > The outer operation creates all the a-groups. > > And yes, I'm proud of it. Somehow rank obviates the need for transpose or > other reordering. > > Henry Rich ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
