+
означает, что Variable2
ожидается быть связанным (с термином или, возможно, просто с некоторой переменной) - вы можете думать об этом как input to predicate/3
, что предикат не будет пытаться изменить во время исполнения.
-
означает, что Variable3
, как ожидается, будет связан с predicate/3
в своем исполнении - вы можете думать об этом как output from predicate/3
. Это не означает, что нельзя быть связанным, однако, особенно если вы знаете, чего ожидать и проверяете на успех, но predicate/3
описывается как потенциально связывающее (объединяющее) Variable3
с чем-то ,
?
означает, что Variable1
может быть либо привязан (+
, вход) или нет (-
, выход) - predicate/3
должен иметь дело с обоими случаями, если принимает либо.