def sum(N) { for ( I = 1, S = 0; I <= N; I++ ) S += I; return S; }

This is an example definition of a function that sums up integers
from 1 to `N`

. The `N`

in `sum(N)`

is called the
(formal) parameter of `sum(N)`

.
The example shows a function of the single argument.
In general, any number of parameters can be specified by separating
by commas (``,'`).
A (formal) parameter accepts a value given as an argument (or an actual
parameter) at a function call of the function.
Since the value of the argument is given to the formal parameter,
any modification to the parameter does not usually affect the argument
(or actual parameter). However, there are a few exceptions: vector
arguments and matrix arguments.
Let `A`

be a program variable and assigned to a vector value
`[ a, b ]`

.
If A is given as an actual parameter to a formal parameter, say `V`

,
of a function, then an assignment in the function to the vector element
designator `V[1]`

, say `V[1]=c;`

, causes modification of the
actual parameter `A`

resulting `A`

to have an altered value
`[ a c ]`

. Thus, if a vector is given to a formal parameter of
a function, then its element (and subsequently the vector itself) in
the calling side is modified through modification of the formal parameter
by a vector element designator in the called function.
The same applies to a matrix argument.
Note that, even in such case where a vector (or a matrix) is given to
a formal parameter, the assignment to the whole parameter itself has
only a local effect within the function.

def clear_vector(M) { /* M is expected to be a vector */ L = size(M)[0]; for ( I = 0; I < L; I++ ) M[I] = 0; }

This function will clear off the vector given as its argument to the
formal parameter `M`

and return a 0 vector.
Passing a vector as an argument to a function enables returning
multiple results by packing each result in a vector element.
Another alternative to return multiple results is to use a list.
Which to use depends on cases.

Go to the first, previous, next, last section, table of contents.