Знак вопроса, плюс, минус предыдущие имена переменных Prolog
Я искал объяснение этому, но не нашел его. Что означают знак вопроса, плюс знак и знак минуса, который иногда предшествует именам переменных в описании предиката Prolog?
Пример:
predicate(?Variable1,+Variable2,-Variable3)
Ответы
Ответ 1
-
?
означает: Эта переменная может быть либо создана, либо не создана. Возможны оба способа.
-
+
означает: эта переменная является входом в предикат. Как таковой он должен быть создан.
-
-
означает: Эта переменная является выходом для предиката. Обычно он не создается, но может быть, если вы хотите проверить конкретное "возвращаемое значение".
Источник: глава 4 документации SWI Prolog.
Ответ 2
+
означает, что ожидается, что Variable2
будет привязано (к термину или, возможно, к некоторой переменной) - вы можете думать об этом как о вводе predicate/3
, который предикат не будет пытаться изменить в исполнении.
-
означает, что Variable3
, как ожидается, будет связан predicate/3
в его исполнении - вы можете думать об этом как о выходе из predicate/3
. Это не значит, что это не может быть связано, особенно если вы знаете, чего ожидать и проверяете на успех, но predicate/3
описывается как потенциально связанный (унифицирующий) Variable3
с чем-то.
?
означает, что Variable1
может быть либо привязанным (+
, input), либо нет (-
, output) - predicate/3
должен иметь дело с обоими случаями, если он принимает либо.