1

リスト付きのファクトがあるとします。

members([a,b,c,d]).

ルールの書き方:

ismember(X) %returns 'Yes' only if X is a or b or c or d.

ライブラリなしで、純粋な Prolog を使用したソリューションが必要でした。

4

2 に答える 2

2

まず 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
于 2013-10-25T19:51:44.777 に答える
0

ismember/1のリストに引数が含まれている場合に成功する述語が必要members/1ですか? つまり、事実がmembers([1,2,3])ismember(X)ある場合、X が a、b、c、または d の場合でも成功しますか? members/1単項述語が必要な場合、実際には事実を調べたくないかもしれません。バイナリ述語が必要な場合は、member/2上で mrbatch が言ったように、独自の述語が必要です...

于 2013-10-25T18:27:28.367 に答える