Precise checking means that the check is done as though
had been called with the exact type specifier that appeared in the
If a variable is declared to be
(integer 3 17) then its value
must always be an integer between
17. If multiple
type declarations apply to a single variable, then all the
declarations must be correct; it is as though all the types were
intersected producing a single
and type specifier.
To gain maximum benefit from the compiler's type checking, you should
always declare the types of function arguments and structure slots as
precisely as possible. This often involves the use of
member, and other list-style type specifiers.