私は学習Prolog
を始めたばかりなので、これが少しナイーブ、またはかなりナイーブである場合はご容赦ください。この述語を定義しようとしています
| ?- times(M,N,Product) :- Product is M*N.
これは私にこのエラーを与えます
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
GNU Prolog を使用しています。ここでの障害は何ですか?
私は学習Prolog
を始めたばかりなので、これが少しナイーブ、またはかなりナイーブである場合はご容赦ください。この述語を定義しようとしています
| ?- times(M,N,Product) :- Product is M*N.
これは私にこのエラーを与えます
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
GNU Prolog を使用しています。ここでの障害は何ですか?
false が言ったように、インタープリターの実行中に述語または関数を定義する場合は、次のように入力して、インタープリターの「ユーザー」モードに入る必要があります。
['user'].
述語を入力したら、この「ゾーン」を離れる必要があります。これは、コーディングが終了したことをインタープリターに確認するためであり、述語をバイトコードにコンパイルし始めることができます。次に、関数名を介してアクセスできます。
「ユーザー」モードを終了するには、単に を押しctrl + d
ます。
swipl と gprolog の両方でテスト済み:
SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0
よろしく!
ユーザー マニュアル 8.7 動的句管理、特に asserta/assertz を確認してください。
次に、gprolog で新しい述語を定義するのに役立ちます。
asserta( ( times(M,N,Product) :- Product is M*N ) )。