ADDENDUM

Following discussions at APL92 Lee Dickey sent me new DAGS for hook and
fork (see chapter 8) and diagrams for the functions (from a note of Roger
Hui not included in this edition). They are copied here below.


  |%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|
  |%|                                |%|                                |%|
  |%|                                |%|                                |%|
  |%|             FORK               |%|             HOOK               |%|
  |%|             f g h              |%|             f g                |%|
  |%|                                |%|                                |%|
  |%|   (f g h) y      x (f g h) y   |%|    (f g) y        x (f g) y    |%|
  |%|                                |%|                                |%|
  |%|       g              g         |%|       f               f        |%|
  |%|      / \           /   \       |%|      / \             / \       |%|
  |%|     f   h         f      h     |%|     y   g           x   g      |%|
  |%|     |   |        / \    / \    |%|         |               |      |%|
  |%|     y   y       x   y  x   y   |%|         y               y      |%|
  |%|                                |%|                                |%|
  |%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|
  |%|                                |%|                                |%|
  |%|                                |%|                                |%|
  |%|             ATOP               |%|            COMPOSE             |%|
  |%|             f @ g              |%|             f & g              |%|
  |%|                                |%|                                |%|
  |%|   (f @ g) y      x (f @ g) y   |%|   (f & g ) y     x (f & g) y   |%|
  |%|                                |%|                                |%|
  |%|      f               f         |%|       f               f        |%|
  |%|      |               |         |%|       |              / \       |%|
  |%|      g               g         |%|       g             g   g      |%|
  |%|      |              / \        |%|       |             |   |      |%|
  |%|      y             x   y       |%|       y             x   y      |%|
  |%|                                |%|                                |%|
  |%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|
  |%|                                |%|
  |%|                                |%|
  |%|             DUAL               |%|
  |%|             f&.g               |%|
  |%|         (g^:_1) @ (f&g)        |%|
  |%|                                |%|
  |%|   (f&.g) y        x (f&.g) y   |%|
  |%|                                |%|
  |%|    g^:_1            g^:_1      |%|
  |%|      |                |        |%|
  |%|      f                f        |%|
  |%|      |               / \       |%|
  |%|      g              g   g      |%|
  |%|      |              |   |      |%|
  |%|      y              x   y      |%|
  |%|                                |%|
  |%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%|


The fork can be seen to be a special case of the hook, because the
function Fork defined by

  Fork =.   [ f (g@])

gives us the dyad

  x Fork y      <-->

  x ( [ f (g@]) ) y     <-->

       f                   f                  f
     /   \               /   \              /   \
    [    g@]    <-->    x     g    <-->    x     g    <-->  x (f g) y
   / \   / \                  |                  |
  x   y x   y                 ]                  y
                             / \
                            x   y

and the monad

    Fork y      <-->
    ( [ f (g@]) ) y     <-->

       f                   f                  f
     /   \               /   \              /   \
    [    g@]    <-->    y     g    <-->    y     g    <-->    (f g) y
    |     |                   |                  |
    y     y                   ]                  y
                              |
                              y

This idea of using ] and [ as place holders in function expressions
involving hook and/or fork is quite interesting and has seemingly
limitless applications.  For example:

 x ((f@]) g (h@[)) y  <-->
       g                   g                  g
     /   \               /   \              /   \
   f@]   h@[    <-->    f     h    <-->    f     h    <-->  (f y) g (h x)
   / \   / \            |     |            |     |
  x   y x   y           ]     [            y     x
                       / \   / \
                      x   y x   y

 It is an interesting exercise to show that any expression involving
 one or more x and one or more y can be written, using hook and fork,
 as a function of just one x and just one y.  For example, the
 expression x f x g x h y is equivalent to x ([ f [ g h) y

 