私はこのコードを持っています:
res([],M,M).
res([[A,B]|G],inM,M) :-
dfs(A, [[A,B]|G], [], [], Out),
processResponse(Out,inM,M1),
dfs(B, [[A,B]|G], [], [], Out2),
processResponse(Out2,M1,M2),
res(G,M2,M).
を実行するres([],[],M)
と、インタプリタで正常に動作し、 が返されますM = []
。
を実行するres([[a,b]],[],M)
と失敗します。トレースを調べてみましたが、他のルールをres
試してもすぐに失敗します。dfs
同じ入力を使用して、インタープリターに直接ルールを記述した場合、それらは正常に機能します。
SWI プロローグを使用しています。なぜこれが起こるのですか?これを機能させるには何を変更する必要がありますか?