Hook

From J Wiki
Jump to navigation Jump to search


<=   =>

A train is a sequence of two or three words in a row that is given a special meaning. A train of two verbs is a hook and is evaluated as follows:

  (f g) y	evaluates as	y f g y
x (f g) y	evaluates as	x f g y


Suppose you wanted to scale a list of numbers such that the result was each number divided by the maximum number in the list. The maximum over a list is given by the verb derived by applying the adverb / to the verb >. .

   a =. 3 5 8 2 7
   maxover =. >./
   maxover a
8


To divide an argument by the maximum over the argument you can use:

   a % maxover a
0.375 0.625 1 0.25 0.875


The above can be written as a hook.

   (% maxover) a
0.375 0.625 1 0.25 0.875


You can now define scale as a hook with % >./ .

   scale =. % >./
   scale a
0.375 0.625 1 0.25 0.875


<=   =>

Primer Index               Hover to reveal titles   -   Click to access   -   Current page is highlighted
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
45 46 47 48
50 51 52 53 54 55 56 57
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
97 98 99 100 101 102 103 104 105 106