私は述語を持っています
superclass('Horde', 'Blood Elf').
superclass('Horde', 'Orc').
element('Blood Elf', ['Paladin', 'Priest','Mage','Warlock','Death Knight','Rogue']).
element('Orc', ['Warrior', 'Shaman','Warlock','Death Knight','Hunter','Rogue']).
find(A):-
( element(_,B),member(A,B)
-> forall(
( element(_,B), member(A,B) ),
( element(C,B), superclass(D,C), format('~w -> ~w -> ~w\n',[D,C,A])))
; superclass(A, _)
-> format('~w\n',A), forall(superclass(A,B),format('\t~w\n',B))
).
および の結果の 2 つfind('Rogue').
。結局、述語はそのうちの 1 つだけを出力します。ただし、forall(..)
コンソールにコピーペーストすると、2 つの結果がすべて表示されます。なんで?