私はまだPrologの新人です。リストを含むエクササイズでは問題がありました。任意のデータのリストがあれば、リストを2つのリスト実数値を含むものとし、元のリストの他の項目は無視します。リストをタイプ別に2つの別々のリストに分類する
私がこれまでに以下のことを書いた:
?- splitList([1, 2.5, 6, 7.0, -1, -0.5], I, F).
ERROR: toplevel: Undefined procedure: splitList/3 (DWIM could not correct goal)
このエラーの通常の容疑者はいないようです:
isInteger(I, IntegerListHead):-
integer(I),
IntegerListHead is I.
isFloat(F, FloatListHead):-
float(F),
FloatListHead is F.
splitList([]).
splitList([H|T], [IntHead|IntList],[FloatHead|FloatList]):-
isInteger(H, IntHead),
isFloat(H, FloatHead),
splitList(T, IntList, FloatList).
は、しかし、私は特定のエラーを取得する理由はわからないんだけど場合には、しかし、多分私は何かを逃したのですか?
編集:私は、ファイルを再読み込みし、それを私は、次しまった二度目に走っ:
?- splitList([1, 2.5, 6, 7.0, -1, -0.5], I, F).
false.
'splitList'述部には、基本case節に1つの引数がありますが、再帰的節には3つの引数があります。それは動作しません。基本ケースにも3が必要で、他の2つの対応する値を提供する必要があります(この場合、 '[]'が適切ではないでしょうか?)。あなたのエラーは、Prologが3引数の述語を定義していないように見えるので、正しく表示しているコードをロードしてはいけません。 – lurker
あなたのエラーメッセージにはタイプミスが含まれています:あなたは 'splitList/1'を呼び出していますが、これは単純な事実ですが、' splitList/3'についてはエラーが出ます。それ無理。 – false
ああ、謝罪 - 私は間違った行をコピーしました。私はそれを速く編集させてください。 –