Книга: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ

Синтаксис

Синтаксис

У каждого имеются свои представления о том, какая форма синтаксиса наиболее естественна и наглядна. К счастью, синтаксис Пролога довольно прост и не дает большого простора для вариаций. Один из спорных вопросов – как следует отличать переменные от атомов. Здесь для обозначения переменных используются имена, начинающиеся с прописной буквы, а для обозначения атомов – со строчной. Кроме того, мы допускаем атомы, составленные из последовательностей знаков, таких как '*', '.' и '='. Некоторые Пролог-системы придерживаются в отношении использования прописных и строчных букв обратного соглашения (когда имена переменных начинаются со строчной буквы). Другие различают имена переменных за счет того, что начинают их со специальной литеры, как, например, '_PERSON' или '*PERSON'. Это удобно для систем, где прописные и строчные буквы не различаются. Другим моментом, где возможны расхождения, является способ записи утверждений – как заголовок утверждения отделяется от тела, как разделяются отдельные цели в теле и как обозначаются вопросы к системе. Для этого вполне могут употребляться атомы, отличные от ':-', '.' и '?-', или использоваться более сложные методы. В одной из ранних систем заголовок и цели утверждения размещались одно за другим, причем перед заголовком утверждения ставили знак '+', а перед каждой из подцелей – знак '-'. Короче говоря, вам могут встретиться способы записи утверждений, приведенные ниже, а также и отличные от них.

uncle(X,Z):- parent(X,Y), brother(Y,Z).

Uncle(x,z) ‹- Parent(x,y) & Brother(y,z).

UNCLE(_X,_Z):- PARENT(_X,_Y), BROTHER(_Y,_Z).

+UNCLE(*X,*Z) -PARENT(*X,*Y) -BROTHER(*Y,*Z).

((UNCLE X1 ХЗ) (PARENT X1 Х2) (BROTHER X2 ХЗ))

uncle(X,Z): parent(X,Y); brother(Y,Z).

Оглавление книги


Генерация: 0.168. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз