Первое использование SWI-Prolog
Я новичок в Prolog. Я просто пытаюсь получить некоторые данные из Prolog в Windows Vista.
Я загрузил и установил Prolog 5.1; Я выбрал расширение файла .pro при установке (не путать с файлами Perl).
Я создал файл с именем test.pro
.
Внутри этого файла я поставил следующее:
inside(tom).
?-inside(tom).
Я дважды щелкнул файл, и появился интерфейс командной строки. На этом интерфейсе (после кучи общей версии Prolog/информации об авторских правах) единственным выходом является:
1 ?-
ОК, для начала я не ожидал, что он задаст вопрос; Я ожидал, что он ответит на вопрос (что-то вроде линии "да" ).
В любом случае, я попытался ответить на запрос следующим образом:
В командной строке я снова вставил 'inside (tom).', поэтому вся строка выглядит так:
1 ?- inside(tom).
Я нажал Enter и получил сообщение об ошибке:
ERROR: toplevel: Undefined procedure: inside/1 (DWIM could not correct goal)
Ответы
Ответ 1
Вам нужно скомпилировать это сначала (также называемое "проконсультироваться" в прологе). Если бы я знал, какая версия пролога у вас есть, я могу узнать точную запись ключа для этой команды (Ctrl-L может работать). Кстати, добро пожаловать в чудесный мир пролога - мне это нравится:) Как только вы преодолеете это препятствие, оно становится намного лучше.:)
Ответ 2
Пролог не отвечает на вопросы, если вы не сказали ему фактов. (За исключением некоторых встроенных фактов, таких как member(1, [1,2,3])
.)
Вы можете указать, кто внутри (комментарий следует за %
):
1 ?- [user]. % get facts and rules from user input
|: inside(mary). % Mary and John are explicitly inside
|: inside(john).
|: inside(X) :- location(X, house). % rule: anyone in the house is inside
|: inside(X) :- location(X, office). % (variables start with a capital letter)
|:
|: location(tom, house).
|: location(bernard, house).
|: location(anne, office).
|: % type Ctrl+D
% user://1 compiled 0.00 sec, 1,220 bytes
true.
2 ?- inside(tom). % Prolog deduces that Tom is inside
true .
Если вы хотите узнать Prolog, Learn Prolog Now - это хороший бесплатный учебник.
Ответ 3
Быстро и грязно. То, что не хватало, - это "компиляция" файла, известная как консультация
и синтаксис следующий: все символы в строке релевантны.
? - [имя_файла].
тогда вы можете задавать вопросы и делать другие вещи с помощью базы данных (исходный код в прологе)
http://www.swi-prolog.org/pldoc/man?section=quickstart