2

Prolog (具体的には SWI Prolog) に慣れようとしています。

私はこの非常に単純なリストを持っています:

animal(bear).
animal(mouse).
animal(bird).

ここで、述語動物 (正しい表現は何ですか?) を満たすすべてのアトムを求めるときはいつでも、常に最初のアトムだけを取得します。

?- animal(X).
X = bear .

動物の場合、3 つのアトムはすべて「true」と評価されますが。

?- animal(mouse).
true.

?- animal(bird).
true.

私は何を間違っていますか?この動作は、何らかの設定で制御できますか?

4

1 に答える 1

0

あなたのコードには何も問題はありません。Prolog は推論マシンです。したがって、すべての変数を満たす最初の解を見つけようとします。解決策が見つかったら、それを出力します。

追加の解決策が必要な場合は、プロローグが検索を続行できるように入力する必要がある組み合わせがあるはずです。私の記憶が正しければ、セミコロンかもしれません...

お役に立てれば

于 2012-12-06T14:41:26.530 に答える