When introducing a built-in predicate, we shall present its usage with a mode spec, which has the form name(arg, ..., arg), where each arg denotes how that argument should be instantiated in goals, and has one of the following forms:
Mode specs are not only used in the manual, but are part of the syntax of the language as well. When used in the source code, however, the ArgName part must be omitted. That is, arg must be either `:', `+', `-', or `?'.