[解決済み] Prologは初めてです。このコードを実行しようとすると、 - ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal) が表示されます。
2022-02-18 15:03:24
質問
以下は、私が書いた事実です。
instructor(ahmed,mohammed, cs101,01).
instructor(sara,salah,cs101,02).
instructor(maryam,faisal,cs101,03).
instructor(ali,hassan,cs311,01).
enrolled(201110202,huda,issa,cs101,01).
enrolled(20110303,mona,amer,cs101,01).
enrolled(20115566,amal,omar,cs101,01).
enrolled(20118899,ahmed,hassan,cs101,01).
ルール
teaches(D,S):-
instructor(D,_,C,Z),
enrolled(S,_,_,C,Z).
classmate(s1,s2,C):-
enrolled(s1,_,_,C,Z),
enrolled(s2,_,_,C,Z).
しかし、idがstdを教える人というクエリを実行すると
20110303
というエラーが表示されます。私はあらゆる種類のエラーをチェックしました。構文的にも論理的にも正しいのですが、それでも未定義手続きと表示されます。
?- debug.
true.
[debug] ?- teaches(D,20110303).
ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal)
解決方法は?
エラーの発生
SWI-PROLOGを使用している場合、同じエラーが発生します。
editor
でファクトとルールを入力し、その後に
Prolog interpreter
はクエリを実行します。
ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal)
相談しながらロード
これでファクトとルールが
C:/Users/Eric/Documents/Prolog/soQuestion_4.pl
で、インタープリターで
consult
?- consult("C:/Users/Eric/Documents/Prolog/soQuestion_4.pl").
そして、クエリを実行します。
?- teaches(D,20110303).
正しい結果を得ることができます。
D = ahmed ;
false.
リストを使用する
述語が読み込まれているかどうかを確認する一つの方法として
listing
.
listing を使って述語をチェックすると
teaches
consultで読み込む前に、私は取得します。
?- listing(teaches).
ERROR: prolog_stack([frame(12,call(system:throw/1),throw(error(existence_error(procedure,teaches),context(toplevel,'DWIM could not correct goal')))),frame(11,clause(<clause>(000000000518AD30),62),'$dwim':dwim_existence_error(error,user:teaches)),frame(8,clause(<clause>(0000000005008E40),24),prolog_listing:listing(user:teaches)),frame(7,clause(<clause>(0000000005154870),3),'$toplevel':toplevel_call(user:listing(teaches)))]): procedure `teaches' does not exist (DWIM could not correct goal)
で述語を読み込むと、その述語は
?- consult("C:/Users/Eric/Documents/Prolog/soQuestion_4.pl").
true.
という述語があることを確認し、リストで確認します。
?- listing(teaches).
teaches(A, B) :-
instructor(A, _, C, D),
enrolled(B, _, _, C, D).
関連
-
[解決済み】Prolog - 引数が十分にインスタンス化されていない
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] SWI-Prologでリストから重複を削除する方法は?
-
[解決済み] Prolog - 回文ファンクタ
-
[解決済み] Prologは初めてです。このコードを実行しようとすると、 - ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal) が表示されます。
-
[解決済み] Prologの未定義手続きエラー
-
[解決済み] Prologでは%記号はどのような意味ですか?
-
[解決済み] Prolog ㊙と㊙の違いは何ですか?
-
[解決済み] 論理プログラミングに関して、PrologとminiKanrenの主な技術的な違いは何でしょうか?[クローズド]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Prolog - 引数が十分にインスタンス化されていない
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] Prologにおけるエクスクラメーションマーク
-
[解決済み] Prolog - 回文ファンクタ
-
[解決済み] Prologは初めてです。このコードを実行しようとすると、 - ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal) が表示されます。
-
[解決済み] Prologの未定義手続きエラー
-
[解決済み] Prologでは%記号はどのような意味ですか?
-
[解決済み] Prolog ㊙と㊙の違いは何ですか?
-
[解決済み] 論理プログラミングに関して、PrologとminiKanrenの主な技術的な違いは何でしょうか?[クローズド]。