Пролог-автомат (pa) в поисковом движке FAIND: переменные

Понятие переменной в Прологе отличается от принятого во многих языках программирования. Переменная не рассматривается как выделенный участок памяти (что привычно для C программистов). Она служит для обозначения объекта, существование и расположение которого управляется логической машиной. Благодаря такому подходу к управлению объектами (и временем их жизни) само понятие сборки мусора в логической машине отсутствует - объекты живут ровно столько, сколько нужно и удаляются без запуска каких-либо сборщиков мусора (garbage collector).

Переменные по сложившейся в Прологе традиции имеют имена, начинающиеся с заглавной буквы или с символа подчеркивания:

Sokrat

ALFA

Философ

Как и в C++, может быть несколько переменных с одинаковым именем. Областью видимости переменной является утверждение - к примеру, теорема. Единственным исключением из правила определения области действия переменных является анонимная переменная “_”. Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения.

Переменные, отличные от анонимных, называются именованными, а неконкретизированные (переменные, которым не было присвоено значение) называются свободными. Обратите особое внимание, что в отличие от процедурных языков свободные переменные Пролога - это нормальное явление. Процедурные языки рассматривают переменные, которым не присвоено значение (неинициализированные) как потенциальную ошибку.

Переменные с именами, начинающимися с символа подчеркивания, лучше не использовать - они интенсивно генерируются и используются логической машиной для внутренних целей.

Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если имя переменной несущественно.

  © Mental Computing 2010