2011-01-03 14 views
0

リスト順感度

likes([apples, oranges], john). 

は、どのように私は

likes([apples, oranges], Who). 

likes([oranges, apples], Who). 

を照会し、同じ結果を得ることができるという事実を考えると?あなたが並べ替えしたくない場合は、私はそのようなことをするだろう

​​
+1

何か試しましたか? – Muggen

+0

@Muggen:まだ – qutron

答えて

1

likes/2で、最初(リスト)の引数は、常に手動でソートされ、何の繰り返しが含まれていない、場合、クエリ:

ファイル:

likes([apples, oranges], jo). 

likes_find([],_). 
likes_find([Head | Tail] , Who):- 
    likes(List1 , Who), 
    member(Head , List1), 
    likes_find(Tail ,Who). 

テスト:

?- likes_find([oranges,apples],X). 
X = jo . 

?- likes_find([oranges,apples,fail_here_plz],X). 
false. 

?- likes_find([oranges],X). 
X = jo . 

?- likes_find([oranges,apples],jo). 
true . 

?- likes_find([apples,oranges],jo). 
true .