リスト付きのファクトがあるとします。
members([a,b,c,d]).
ルールの書き方:
ismember(X) %returns 'Yes' only if X is a or b or c or d.
ライブラリなしで、純粋な Prolog を使用したソリューションが必要でした。
リスト付きのファクトがあるとします。
members([a,b,c,d]).
ルールの書き方:
ismember(X) %returns 'Yes' only if X is a or b or c or d.
ライブラリなしで、純粋な Prolog を使用したソリューションが必要でした。
まず predicate が必要member(X, List)
です。またはmember1
:
member1(X, [X|_]).
member1(X, [_|T]) :- member1(X, T).
したがって、ルールismember
は次のようになります。
ismember(X):-
members(List),
member(X, List). %or member1 if we need to define membership rule
ismember/1
のリストに引数が含まれている場合に成功する述語が必要members/1
ですか? つまり、事実がmembers([1,2,3])
でismember(X)
ある場合、X が a、b、c、または d の場合でも成功しますか? members/1
単項述語が必要な場合、実際には事実を調べたくないかもしれません。バイナリ述語が必要な場合は、member/2
上で mrbatch が言ったように、独自の述語が必要です...