リストの長さを計算する関数を作成しました。以下は私のコードです。プロローグ引数が十分に具体化されていない(リスト長を計算する関数)
listLength(LIST) :- solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
Iが入力
でこのコードを実行する - ?LISTLENGTH([1、2、3、4、5、6、7])。
Iは以下のようなコードの上方に変更したとき、次に、インタプリタは私にエラーメッセージsolve/2 : Arguments are not sufficiently instantiated.
を示しました。
listLength(LIST) :- LENGTH is 0, solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
私は同じ入力でこのコードを実行すると、その後、必ずが書かれています。
私はLENGTHを計算したいので、listLength関数で変数を使いたいと思います。
私には何が間違っていますか? (私はswi-prologを使用していますのでご了承ください)
これはLISTLENGTH 'ようなクエリ(L、10000)のための非常に遅い' – false
はどのように問い合わせることができ、それは一つだけを取るので、そのパラメータリスト?? – coder
あなたは正しいです!私は最後に追加だけを見た。 'solve(L、100000)を読んでみてください。それは起こらないでしょう。 – false