OK、Prologで相互再帰によって各値をチェックするコードを書いています。これまでの私のコードは次のとおりです。
semestersok(SP) :-
[Prior|Tail] = SP,
sem1ok(SP).
%% sem1ok(SP) :- checks semester 1 of SP is ok
sem1ok(SP) :-
[Sem1|Tail] = SP,
sem2ok(Tail).
%% sem2ok(SP) :-
sem2ok(SP) :-
[Sem2|Tail] = SP,
sem1ok(Tail).
私はチェックに関係するコードをまだ入れていません (交互の値をチェックする必要があるため、2 つの関係があります)。空のリストになるまでコードが循環し、失敗して戻ってくるという問題があります。 false (いいえ)。このコードはコードを操作していないので、現状のままで元に戻るはずです。なぜそうではないのですか?