[解決済み】Prolog - 引数が十分にインスタンス化されていない
2022-01-27 19:11:32
質問
あるリストの中で数字でない要素がいくつあるかを数える小さなプログラムを書いています。 以下は私のコードです。
not_number([],0).
not_number([X|T],R):-
not(number(X)),
R1 is R+1,
not_number(T,R1).
not_number([_|Tail],Result):-
not_number(Tail,Result).
このようなコードを実行すると.
?- not_number([1,2,3,5], R).
R = 0 と表示されます(本来は表示されます)。
R = 0.
しかし、リストに文字を入れると
?- not_number([1,2,3,5,a], R).
を実行すると、次のようなエラーが発生します。
ERROR: not_number/2: Arguments are not sufficiently instantiated
Exception: (10) not_number([a], _G247) ?
誰かこのコードの何が問題なのか説明してください。私はPrologの初心者です。
どのように解決するのですか?
この回答を書いているのは、まだベストアンサーが コメント によって ラーカー . 実際の回答として表示させたいのですが。
あなたのコードが機能していないのは、あなたが
R1 is R+1
いつ
R
がインスタンス化されていない場合
not_number([X|T], R)
. あなたの再帰的なケースは、少し後ろに張られています。こうしたいんでしょう。
not_number([X|T],R):-
not(number(X)),
not_number(T,R1),
R is R1+1.
今度は、右側の
is
が呼び出されるとインスタンス化されます。
関連
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] "シンタックスエラー。Prologで「演算子が期待されています。
-
[解決済み] SWI-Prologでリストから重複を削除する方法は?
-
[解決済み] Prologは初めてです。このコードを実行しようとすると、 - ERROR: Undefined procedure: teaches/2 (DWIM could not correct goal) が表示されます。
-
[解決済み] Prologの未定義手続きエラー
-
[解決済み] Prologにおける"˶‾‾‾"とは何ですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] バッチファイルに引数を渡すにはどうしたらいいですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
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におけるエクスクラメーションマーク
-
[解決済み] SWI-Prologでリストから重複を削除する方法は?
-
[解決済み] Prolog - 回文ファンクタ
-
[解決済み] Prologでは%記号はどのような意味ですか?
-
[解決済み] Prologにおける"˶‾‾‾"とは何ですか?
-
[解決済み] Prolog ㊙と㊙の違いは何ですか?
-
[解決済み] 論理プログラミングに関して、PrologとminiKanrenの主な技術的な違いは何でしょうか?[クローズド]。