Read(X,Y)

Доказательство предиката завершается успехом, если считывае­мый терм отождествляется с X, и неудачей в противном случае. При успешном доказательстве переменная Y становится списком, состоя­щим из имен переменных, входящих в терм X. Пролог переименовы­вает переменные, встретившиеся в вводимом терме. Таким образом, когда попытка доказать целевое утверждение read(X,Y) заканчива­ется успехом, список Y содержит внутренние имена переменных, входящих в терм X. Как и при использовании предиката read(X), по­сле вводимого терма должна стоять точка.

Readb(X,Y)

Предикат аналогичен предикату read(X,Y). Различие состоит в том, что пользователь не должен печатать точку после ввода терма.

Примеры:

После запроса:

?-read(X).

система ожидает ввода. Если пользователь напечатает:

test (5).

то в результате переменная X получит значение

Х- test (5)

Задав вопрос

?- read (джек (мужчина)).

и введя терм

test.

получим ответ:

нет.

При запросе:

?-read(X,Y).

вводим терм

fred(P,a(Q)).

в результате получаем

X = fred(_55,a(_57))

Y=[[P |_55],[Q | _57]]

где _55 - внутреннее имя переменной Р, а _57 - внутреннее имя пере­менной Q.

Запись термов

Рассмотрим предикаты, служащие для записи термов.

Write(X)

Данный предикат выводит терм на экран. Если X содержит конк­ретизированные переменные, то на экране отображаются термы, ко­торыми эти переменные конкретизированы. Если X содержит некон­кретизированные переменные, они выводятся как уникальные цело­численные переменные. Сцепленные переменные, входящие в X, отображаются в виде одного и того же целого значения. Например, в ответ на запрос

?- write(cyммa(N,S,N+l)).

на экране появится

сумма (_35,_36 is_35+l).

Writeq(X)

Предикат аналогичен предикату write(X) кроме случая, когда X содержит атом или функторы, которые в программе следует заклю­чать в кавычки. Предикат writeq записывает такие величины на эк­ране в кавычках. Например, в результате запроса

?- writeq('fred.txt').

на экране появится

'fred.txt'

Display (X)

Предикат выводит терм X в стандартной скобочной префиксной

форме записи. Например, запрос

?- display (X+Y).

вызовет появление на экране записи:

+ (X,Y)



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: