Я проверяю, связан ли график и по какой-то причине становится ложным, когда это должно быть правдой.
allConnected([]).
allConnected(A|L) :- checkConnect(A,L), allConnected(L).
checkConnect([],[]).
checkConnect(X, Head|Y) :- isConnected(X,Head), checkConnect(X,Y).
isConnected(X,Y) :- edge(X,Y); edge(Y,X).
edge(a,b).
edge(b,c).
edge(c,a).
Что я делаю для своего предиката, так это проверяю, подключен ли каждый узел в allConnected([a,b,c]). Я должен получить истину, но не могу определить свою ошибку, я пытался использовать трассировку, но это не помогает.
allConnected([A|L]) :- ...
, иначе он никогда не будет совпадать. После этого он будет зацикливаться навсегда :) - person CapelliC   schedule 18.03.2016