Знак вопроса, плюс, минус предыдущие имена переменных 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 должен иметь дело с обоими случаями, если он принимает либо.