У меня есть предикатSWI-Prolog FORALL функция не работает
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))
).
и двух результатов find('Rogue').
. В конце концов, предикат печатает только 1 из них. Однако, когда i copypaste forall(..)
для консоли, он дает мне все 2 результата. Зачем?
Как вы копируете 'forall/2?' – false
forall ((element (_, B), member ('Rogue', B)), (элемент (C, B), суперкласс (D, C), формат ('~ w -> ~ w -> ~ w \ n', [D, C, 'Rogue'])). – defusioner