Пролог - нужна информация о фактах - PullRequest
0 голосов
/ 18 января 2012

Скажем, у меня был такой факт, как:

bigger(cat,mouse).

Если бы я хотел описать это кому-то, я был бы прав, сказав: "кошка - это первый термин в этом факте, а мышь - второй термин«или я бы назвал кошку и мышь атомами и сказал бы, что кошка - это первый атом в действительности, а мышь - второй».

Ответы [ 3 ]

1 голос
/ 18 января 2012

Ваше первое описание справедливо, так как «термин» - рекурсивная структура данных: то есть термин - это либо атом, число, либо структура, где структура - это «имя (arg1, arg2, ...)»,и каждый аргумент является термином.

Таким образом, ваше второе описание является более точным (ограниченным).

Как отмечалось в других ответах, «аргумент» - это обычное именование позиционно идентифицированных атрибутов в структурированных терминах.

0 голосов
/ 19 января 2012

Чтобы немного все перемешать, я бы сказал, что bigger - это двоичное отношение, которое сохраняется между cat и mouse.

0 голосов
/ 18 января 2012

аргумент будет идеальным словом, я думаю.Но обычно для описания предиката вы должны использовать следующую форму:

predicate/arity : predicate(arguments...)
description of arguments

Здесь это будет выглядеть примерно так:

bigger/2 : bigger(Bigger, Lesser)
Holds if Bigger is bigger than Lesser.

Кроме того, вы можете уточнить режим аргументов:+ для ввода, - для вывода,?для обоих (и @ для чистого ввода) обратитесь к ответу @ false на этот вопрос , чтобы получить больше информации о режимах, если это необходимо.

Здесь полная версия может быть:

bigger/2 : bigger(?Bigger, ?Lesser)
Holds if Bigger is bigger than Lesser.
...