それぞれの人に名前と年齢を与える次の知識ベースがあると想像してください。
person(mary, 39).
person(john, 24).
person(sandy, 17).
ここで、20 歳以上のすべての人を取得したいと考えています。さらに、年齢ではなく名前を収集したいだけです。mary
ここでは、 と を取得したいと思いますjohn
。
これを一般的に Prolog で、より具体的には SWI-Prolog で行う方法は?
次のように、匿名ではない変数を使用する場合:
?- person(X, Y), Y > 20.
X
Prolog は、とY
と I do not wantの両方の値を教えてくれますY
。
_
Prolog は 2 つのインスタンス化をリンクできないため、無名変数を使用できません。以下はエラーになります。
?- person(X, _), _ > 20.
それで、これを行う方法は?