Short answer:

   The rank of the noun determines the items,
   the rank of the verb determins the cells.

Every noun can be thought of as a "list of something".  For example, a vector 
(a 1 dimensional noun) is a list of scalars, a table (2D) is a list of vectors, 
a cube (3D) is a list of tables, and so on.  The items of a noun are whatever 
it's a list of.  The items of a vector are scalars, the items of a table are 
vectors, the items of a cube are tables, and so on.

Any verb can be limited to a certain rank of noun.  That is, it can be 
impossible for a verb to see a noun of higher than a specific rank.  For 
example,  +  can only see scalars, because  list+list  makes no sense:  only 
scalars can be added.  So, no matter how hard you try,  +  will only ever see a 
scalar at a time.  The highest rank of noun a certain verb can see is a "cell" 
for that verb. 

Of course, you can feed a verb a higher ranked argument, in which case there 
will be more than one cell, but the verb will still only see one cell at a 
time.  That's why  list+list  does work: it's operating piecewise, adding a 
scalar at a time.

A verb can have infinite (unbound) rank, in which case ANY argument will only 
have one cell.  Think of the monad  <  (box), for example.  No matter what 
argument you give it, it treats that argument as an indivisible whole, and 
returns it in a box.  

A verb can also define its cells in terms of the rank of the noun, so, for 
example,  "_1  means "operate on rank one less than the argument", which means 
"treat the argument like a list of cells", which means "operate on the items of 
the argument".  So, in the special case of a verb  "_1  , the items and the 
cells are the same.

Does that clarify?

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

Reply via email to