A *formal declarer* specifies a mode of the value being ascribed
in an identity declaration. It appears on the left hand side of an
identity declaration, before the defining identifier. For example, in
the following identity declaration the formal declarer is the mode
indication

:
**real**

realpi = 3.141592;

Formal declarers also appear in routine texts as the modes of
formal parameters, which shouldn’t be surprising,
since the mechanism of associating formal parameters with actual
parameters in a routine call is the identity declaration: during a
function call the internal values provided in the call get ascribed to
the formal parameters. For example, in the following routine the mode
indications

and **ref** **tree**`[]`

are formal
declarers:
**int**

procset tree weights = (reftreenode, []intweights)void:begin...end

The mode specified in a cast is also a formal declarer. In the
following somewhat example, where a cast is used in the firm context
of an operator, the formal declarer is

:
**real**

c :=real(2) * pi * r;

Note that (unlike actual declarers) formal declarers of row modes do not include bounds. If bounds are provided they are ignored, although some implementation may offer checking the bounds at run-time as a security measure. This could be particularly useful in formal parameters, where the run-time check would make sure multiples of the expected bounds get passed to the routine.

Simplified [RR 4.4.1.c] (formal declarer in identity declaration):

A) MODINE :: MODE ; routine. c) identity definition of MODE TAG: MODE defining identifier with TAG, is defined as token, source for MODINE.

Simplified [RR 4.6.1.r] (formal declarer in formal parameter):

r) MODE parameter joined declarer: formal MODE declarer.

Simplified [RR 5.5.1.a] (formal declarer in cast):

a) MOID cast: formal MOID declarer, strong MOID ENCLOSED clause.

In `4.4.1.c`

the formal declarer is the `MODE`

before the
`defining identifier`

.

Note that `is defined as token`

is the equal sign character in
the standard representation.

- [II 2.2.1]
- [RR 4.4.1.c,4.6.1.r,5.5.1.a]