Подтвердить что ты не робот

Первое использование 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)
4b9b3361

Ответ 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