A program written in the GAP language is called a function.
Functions are special GAP objects. Most of them behave like
mathematical functions. They are applied to objects and will return a
new object depending on the input. The function Factorial
, for
example, can be applied to an integer and will return the factorial of
this integer.
gap> Factorial(17); 355687428096000
Applying a function to arguments means to write the arguments in
parentheses following the function. Several arguments are separated by
commas, as for the function Gcd
which computes the greatest common
divisor of two integers.
gap> Gcd(1234, 5678); 2
There are other functions that do not return a value but only produce a
side effect. They change for example one of their arguments. These
functions are sometimes called procedures. The function Print
is only
called for the side effect to print something on the screen.
gap> Print(1234, "\n"); 1234
In order to be able to compose arbitrary text with Print
, this function
itself will not produce a line break after printing. Thus we had another
newline character "\n"
printed to start a new line.
Some functions will both change an argument and return a value such as
the function Sortex
that sorts a list and returns the permutation of
the list elements that it has performed.
You will not understand right now what it means to change an object. We will return to this subject several times in the next sections.
A comfortable way to define a function is given by the maps--to
operator -
consisting of a minus sign and a greater sign with no
whitespace between them. The function cubed
which maps a number to its
cube is defined on the following line.
gap> cubed:= x -> x^3; function ( x ) ... end
After the function has been defined, it can now be applied.
gap> cubed(5); 125
Not every GAP function can be defined in this way. You will see how to write your own GAP functions in a later section.
In this section you have seen GAP objects of type function. You have learned how to apply a function to arguments. This yields as result a new object or a side effect. A side effect may change an argument of the function. Moreover you have seen an easy way to define a function in GAP with the maps-to operator.
Procedure Calls. The functions of the GAP library are described in detail in the remaining chapters of this manual, the Reference Manual.
GAP 3.4.4