web-dev-qa-db-ja.com

7週間で7つの言語に続くPrologexistence_error

私は「7週間で7つの言語」という本をフォローしています。

コマンド_port install gprolog-devel_を使用してMacマシンにgprologをインストールし、最初のプロローグコードを実行しました。

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

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

プロローグインタープリターでlikes(wallace, cheese).と入力すると、エラーが発生します

キャッチされない例外:error(existence_error(procedure、likes/2)、top_level/0)。

Prolog1.3.1をMacにインストールできませんでした。Prolog1.4.0を使用しています。

28
Hongseok Yoon

対話型のgprologインタープリターは、ロードされた述語のリストに対してクエリを実行します。そのため、existence_error例外が発生します。 IDEを使用してロードを行うか、手動で行うことにより、述語をロードする必要があります。

これが1つのアプローチです:

| ?- [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プログラムのコンサルティング

38
Anders Lindahl