A new system of representing the modes of arguments has been adapted in Release 3, is described in mpg. The library, including IPC, is still documented under the old system of mode annotations:
Each predicate definition is headed by a goal template such as
setof(?X,+Goal,-Set)
Here X and the others are meta-variables, which name the arguments so that we don't have to keep saying "its first argument" and so on. The characters that precede the meta-variables will seem familiar if you know the mode declarations of DEC-10 Prolog; their significance is as follows:
+
-
?
Note that it is not an error to call a predicate with a -
argument already
instantiated. The value supplied will simply be unified with the result
returned, and if that unification fails, the predicate fails.