Что означает предикат "простой / 1" в Прологе (SWI-Пролог) - PullRequest
0 голосов
/ 28 января 2012

Я столкнулся с проблемой при чтении книги.Я вижу, что программа использует предикат "простой" (я думаю, simple/1).Я не знаю, что означает этот предикат, я не могу найти его с ?-help(simple) в консоли.Но когда я пытался выполнить некоторые запросы в консоли, он работал примерно так:

5 ?- simple(p(x)).
false.

6 ?- simple(mia).
true.

7 ?- simple(Mia).
true.

8 ?- simple(f(Mia)).
false.

Я полагаю, это какой-то предикат, определяющий, является ли аргумент терминами (или переменными) или сложными терминами.

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Руководство swi-prolog имеет следующее определение:

простой (@Term) полуотдельный Термин атомарный или переменный.

определение находится в библиотеке совместимости пролога Quintus; в документации quintus prolog определение:

простой (+ Term)

Термин в настоящее время создается для атома, числа, базы данных. или переменная.

в любом случае simple / 1 имеет значение true, если аргумент является простым термином (не уверен, что руководства quintus подразумевают под базой данных; возможно, обработчик для соединения ODBC, я думаю)

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

переведено в предикаты ISO:

simple(T) :- var(T) ; atomic(T).

var / 1 это самое основное устройство метапрограммирования, потому что невозможно предсказать (т.е. выполнить код, связывание переменные) любого предложения без создания экземпляров переменных, которые много раз важная часть, которая нас интересует.

...