$: y (Self-Reference)
See dyadic case below.
x $: y (Self-Reference)
Symbolizes the verb expression which contains it.
The J Dictionary says: "$: denotes the longest verb that contains it."
inc=: (1&$:) : (+) 3 inc 5 8 inc 5 6
Parentheses are redundant here. They only serve to emphasize the structure of the expression.
WARNING: This doesn't work:
inc=: 3 : 0 (1&$:)y : x+y ) 3 inc 5 8 inc 5 |stack error: inc | (1&$:)y
...even though it looks like an explicit version of: (1&$:) : +
This is because the relevant verb (expression) for $: is not the whole explicit definition of inc but only the sentence containing $:, viz (1&$:)y
To make this explicit definition work (in this exact form) you must replace $: with the proverb inc (ie the name to which the whole definition has been assigned) like this:
inc=: 3 : 0 (1&inc)y : x+y ) 3 inc 5 8 inc 5 6
Alternatively, you can make $: work in conjunction with an explicit definition by using the following technique:
inc=: (1&$:) : (4 : 0) x+y ) 3 inc 5 8 inc 5 6
In effect this embeds an explicit dyadic-only definition: (4 : 0) in an ambivalent (=monad/dyad) tacit definition.
Whilst harder to grasp for a beginner than the use of the proverb inc within the verb, it is neater, because it avoids using a proverb within a verb definition. The same definition (or a slightly modified one) can then be assigned to a different name (=proverb), ie the verb can be "renamed", without the risk of calling the wrong verb.
The technique can be seen in practical use in certain J-system and library verbs, for example (in j602):
xedit_j_ (defined in: jadefull.ijs)
dltbs_z_ (defined in: strings.ijs)
fselect_z_ (defined in: files.ijs)
To allow a tacit verb to call itself recursively, without needing to give the verb a name.
max=: $:/ : >. NB. for use monadically or dyadically like this: 5 max 7 7 max 5 7 7
The J Dictionary gives more elaborate examples.