## \$: 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)

### Common uses

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```