3

私は学習Prologを始めたばかりなので、これが少しナイーブ、またはかなりナイーブである場合はご容赦ください。この述語を定義しようとしています

| ?- times(M,N,Product) :- Product is M*N.

これは私にこのエラーを与えます

uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)

GNU Prolog を使用しています。ここでの障害は何ですか?

4

2 に答える 2

6

false が言ったように、インタープリターの実行中に述語または関数を定義する場合は、次のように入力して、インタープリターの「ユーザー」モードに入る必要があります。

['user'].

述語を入力したら、この「ゾーン」を離れる必要があります。これは、コーディングが終了したことをインタープリターに確認するためであり、述語をバイトコードにコンパイルし始めることができます。次に、関数名を介してアクセスできます。

「ユーザー」モードを終了するには、単に を押しctrl + dます。

swipl と gprolog の両方でテスト済み:

SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0

よろしく!

于 2012-12-05T15:45:18.223 に答える
0

ユーザー マニュアル 8.7 動的句管理、特に asserta/assertz を確認してください。

次に、gprolog で新しい述語を定義するのに役立ちます。

asserta( ( times(M,N,Product) :- Product is M*N ) )。

于 2014-01-07T13:37:35.920 に答える