ユーザーから通知された変数が既存のルールと等しいかどうかを確認したい。たとえば、次のようになります。
私は次のルールを持っています
general(mammal) :- facts.
general(bird) :- facts.
それから私はします
read(X).
Xが哺乳類または鳥のいずれかと等しいかどうかを確認したいと思います。それを行う方法はありますか?ありがとう
ユーザーから通知された変数が既存のルールと等しいかどうかを確認したい。たとえば、次のようになります。
私は次のルールを持っています
general(mammal) :- facts.
general(bird) :- facts.
それから私はします
read(X).
Xが哺乳類または鳥のいずれかと等しいかどうかを確認したいと思います。それを行う方法はありますか?ありがとう
はい、できます。例えば
read(X), (X=mammal ; X=bird).
セミコロンは論理和 (OR 演算子) を表し、括弧は目標の正しい順序を確保するためにあります。X が哺乳類または鳥にインスタンス化されている場合、その値を持ち、それ以外の場合は false になります。
編集:私が正しく理解していれば、あなたは欲しい:
read(X), general(X).
Prolog は、その目標が満たされるような X を見つけてから、目標に進みますgeneral(X)
。X が哺乳類または鳥の場合、Prolog はゴールを一般節の 1 つに一致させます。それ以外の場合は失敗します。