Вычисление арифметических выражений
Told
Seen
Обработка файлов
Fx fy xf yf xfx xfy yfx yfy
Op(X,Y,Z)
Nl
Записывает в текущий выходной поток данных последовательность управляющих литер, вызывающую переход на «новую строку». В случае вывода на дисплей все литеры, выводимые после nl, будут размещены на следующей строке страницы; nl выполняется только один раз.
tab(X)
Записывает X «пробелов» в текущий выходной поток данных. Если X неконкретизирован, то фиксируется ошибка, tabвыполняется только один раз.
write(X)
Этот предикат записывает терм X в текущий выходной поток данных, writeвыполняется только один раз. Каждая неконкретизированная переменная, входящая в X, записывается как уникальное имя, начинающееся с подчеркивания ('_'), за которым следует уникальное число, как, например, '_239'. Переменные, сцепленные в пределах одного аргумента предиката write,при печати будут иметь одинаковые имена. Предикат writeучитывает при печати термов имеющиеся объявления операторов. Так, например, инфиксный оператор будет напечатан между своими аргументами.
display(X)
Предикат displayработает в точности таким же способом, что и write,за тем исключением, что он игнорирует все объявления операторов. Предикат displayпечатает любую структуру, начиная с ее функтора, за которым в круглых скобках печатается список аргументов.
Этот предикат объявляет оператор, имеющий приоритет X, позицию и ассоциативность Y и имя Z. Спецификация позиции и ассоциативности выбирается из числа следующих атомов:
Если объявление оператора корректно, то op считается согласованным. Более подробно этот предикат описан в разд. 5.5.
Предикаты для изменения текущего входного и текущего выходного потоков данных были введены в гл. 5. Здесь мы резюмируем наши знания о каждом из этих предикатов.
see(X)
Этот предикат открывает файл X, если он еще не открыт, и определяет, что текущим входным потоком данных становится файл X. Если X неконкретизирована или X конкретизирована именем несуществующего файла, то фиксируется ошибка.
seeing(X)
Это целевое утверждение согласуется с базой данных, если имя текущего входного потока данных (файла) сопоставимо с X, и не согласуется в противном случае.
Этот предикат закрывает текущий входной поток данных (файл) и определяет, что текущим входным потоком данных становится клавиатура терминала (user).
tell(X)
Этот предикат открывает файл X, если он еще не открыт, и определяет, что текущим выходным потоком данных, в который производится запись, является указанный файл. Если X неконкретизирована, то возникает ошибка. Если tellиспользуется для. переключения выходного потока на еще неоткрытый файл и файл с именем, определяемым X не существует, то файл с таким именем создается. Иначе, если файл, определяемый X, уже существует, то предшествующее содержимое файла уничтожается.
telling(X)
Это целевое утверждение согласуется с базой данных, если X сопоставимо с именем текущего выходного потока данных, иначе оно не согласуется.
Этот предикат закрывает текущий выходной поток данных (файл) и записывает маркер конца файла в соответствующий файл. Текущим выходным потоком данных становится дисплей терминала (user).
Арифметические возможности языка Пролог первоначально обсуждались в разд. 2.5. Здесь мы подытожим наши знания об использовании предиката 'is' и о том, какие имеются функторы для формирований арифметических выражений.