Вопросительный знак плюс плюс минус предшествующих имен переменных Пролога - PullRequest
22 голосов
/ 19 ноября 2010

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

Пример:

predicate(?Variable1,+Variable2,-Variable3)

Ответы [ 2 ]

29 голосов
/ 19 ноября 2010
  • ? означает: эта переменная может быть либо создана, либо нет. Возможны оба пути.
  • + означает: эта переменная является входом для предиката. Как таковой он должен быть создан.
  • - означает: эта переменная является выводом предиката. Обычно это не экземпляр, но может быть, если вы хотите проверить определенное «возвращаемое значение».

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

4 голосов
/ 19 ноября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...