Подтвердить что ты не робот

Знак вопроса, плюс, минус предыдущие имена переменных Prolog

Я искал объяснение этому, но не нашел его. Что означают знак вопроса, плюс знак и знак минуса, который иногда предшествует именам переменных в описании предиката Prolog?

Пример:

predicate(?Variable1,+Variable2,-Variable3)
4b9b3361

Ответ 1

  • ? означает: Эта переменная может быть либо создана, либо не создана. Возможны оба способа.
  • + означает: эта переменная является входом в предикат. Как таковой он должен быть создан.
  • - означает: Эта переменная является выходом для предиката. Обычно он не создается, но может быть, если вы хотите проверить конкретное "возвращаемое значение".

Источник: глава 4 документации SWI Prolog.

Ответ 2

+ означает, что ожидается, что Variable2 будет привязано (к термину или, возможно, к некоторой переменной) - вы можете думать об этом как о вводе predicate/3, который предикат не будет пытаться изменить в исполнении.

- означает, что Variable3, как ожидается, будет связан predicate/3 в его исполнении - вы можете думать об этом как о выходе из predicate/3. Это не значит, что это не может быть связано, особенно если вы знаете, чего ожидать и проверяете на успех, но predicate/3 описывается как потенциально связанный (унифицирующий) Variable3 с чем-то.

? означает, что Variable1 может быть либо привязанным (+, input), либо нет (-, output) - predicate/3 должен иметь дело с обоими случаями, если он принимает либо.