>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer

# Table adverb

The dyad `v/` computes a table for the verb `v` (a function table).

       a =. i. 5
       a +/ a	NB. addition table
    0 1 2 3 4
    1 2 3 4 5
    2 3 4 5 6
    3 4 5 6 7
    4 5 6 7 8
       a */ a	NB. times table
    0 0 0  0  0
    0 1 2  3  4
    0 2 4  6  8
    0 3 6  9 12
    0 4 8 12 16

      0 1 +/ 0 1	NB. + table on booleans
    0 1
    1 2
      0 1 +./ 0 1	NB. or
    0 1
    1 1
       0 1 +:/ 0 1	NB. not-or
    1 0
    0 0
       0 1 */ 0 1	NB. times
    0 0
    0 1
       0 1 *./ 0 1	NB. and
    0 0
    0 1

       0 1 *:/ 0 1	NB. not-and
    1 1
    1 0

The derived verb `v/` has a left rank that is the left rank of `v` and a right rank of `_` ; it applies `v` between each cell of the left argument and the entire right argument.

       additiontable =. +/

The verb additiontable is defined as the result of the `/` adverb applied to `+` as an argument. The definition is the same as the definition for sumover that you used in the previous section. The name additiontable makes sense when the dyad is used, and sumover makes sense when the monad is used. Nothing prevents using either name in a misleading way.

       a additiontable a
    0 1 2 3 4
    1 2 3 4 5
    2 3 4 5 6
    3 4 5 6 7
    4 5 6 7 8

The left rank of `+` is 0, so the rank of the derived verb is 0 and its cell arguments are atoms. The right rank of the derived verb is `_` and its cell arguments are the entire right argument. Visually the above works as follows:

    0 (first atom from left) + entire right   gives  0 1 2 3 4
    1 (next atom from left)  + entire right   gives  1 2 3 4 5
    2 (next atom from left)  + entire right   gives  2 3 4 5 6
    3 (next atom from left)  + entire right   gives  3 4 5 6 7
    4 (next atom from left)  + entire right   gives  4 5 6 7 9

The following is an interesting use of table together with the plotting from an earlier section. The plot facility plots each row in a table argument as a separate series of data.

       load 'plot'
       plot 1 2 o. / 0.2 * i.60

    	'surface' plot 1 2 o. / 0.2 * i.60

The `1` from the left argument used as the left argument of `o.` gives sine values in the first row. The `2` from the left argument for `o.` gives cosine values in the second row.

In the examples above the left rank of the original verb is always 0 and so the cells of the left argument of the derived verb are simply the atoms of the left argument. Let's look at an example where the left rank of the original verb is not 0.

       f =. ,"1

The verb `f` is append with a left and right rank of 1.

       p=. 2 2 $'abcd'
       p
    ab
    cd

       q=.3 3$'ABCD'
       q
    ABC
    DAB
    CDA

       p f/ q
    abABC
    abDAB
    abCDA

    cdABC
    cdDAB
    cdCDA

Visually:

    ab (1st list from left) , entire right   gives	abABC
    			                        abDAB
    			                        abCDA

    cd (next list)    	, entire right   gives	cdABC
    		                                cdDAB
    		                                cdCDA

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer