In addition to the built-in C types we use Word as the basic data type in GRÖBNER. Word is defined in SACLIB , and can either be a small integer or a pointer to a single-linked list. In order to distinguish between small integers and pointers to lists, SACLIB defines a constant BETA . A number greater than BETA is considered to be a pointer to a list, otherwise it is an integer (an atom , following the terminology of SACLIB). For a detailed description of the representation of integers and lists in SACLIB see .
In the present stage of the implementation, all data domains are implemented as lists. Hence, a function taking Word as argument, may take an element of any domain as argument without resulting in a compile-time error. We can use this to define functions for arbitrary input (i.e. any list) as shown in Section 3.3.
On the other hand, the compiler is not able to carry out sophisticated type checking in the parameters given to a function, since all parameters are nothing but lists. It is in the programmer's responsibility to ensure that the lists that are given as parameters to a function have the expected structure.