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

Prolog существование_error после семи языков за семь недель

Я просто следую книге "Семь языков за семь недель".

Я установил gprolog на компьютере Mac с помощью команды port install gprolog-devel и запустил первый пролог.

likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).

Если я набираю likes(wallace, cheese). для прологового интерпретатора, у меня есть ошибка

Неперехваченное исключение: ошибка (существование_error (процедура, нравится /2), top_level/0).

Prolog 1.3.1 не может быть установлен на моем Mac, я использую пролог 1.4.0.

4b9b3361

Ответ 1

Интерактивный интерпретатор gprolog запускает запросы против загруженного списка предикатов, поэтому вы получаете исключение existence_error. Вам придется загружать в него предикаты либо с помощью IDE, которая загружает вас, либо делает это вручную.

Здесь один подход:

| ?- [user].
compiling user for byte code...
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).

* Press Ctrl-D to end input. *
user compiled, 6 lines read - 909 bytes written, 15538 ms

yes
| ?- friend(wallace,grommit).

yes
| ?- friend(wallace,wendolene).

no

Руководство gprolog пишет об этом в главе Консультирование программы Prolog

Ответ 2

Я обнаружил, что вырезание и вставка непосредственно из книги часто заканчивается синтаксической ошибкой из-за??? проблемы характера???

Например, я вырезал и вставил код Basic Facts и продолжал получать эту ошибку: friends.pl:5:14: синтаксическая ошибка:. или оператор ожидается после выражения 1 ошибки

Скопировано из ответа № 38, и это сработало!