我需要從謂詞列表中刪除一個項目,但它不起作用。它對我來說仍然是真的,但該項目仍然存在。PROLOG撤回其不起作用
代碼:
eliminar :- limpar,
write('\n*** DELETAR ***\n'),
write('O que deseja deletar ?\n'),
pegarString(X),
doenca(X),
format('~Doença: ~w ~n Sintoma: ~w ~n',[X]),
retract(doenca([X,_]));
write(' ').
pegarString(S) :-
read_line_to_codes(user_input,C),
name(S,C).
perguntadd(X) :- limpar,
write('\n*** ADICIONAR ***\n'),
write('\nDigite o nome da doença que deseja adicionar\n'),
pegarString(X).
adicionar(X) :-
format('Digite o sintoma da doença ~w?~n ',[X]),
pegarString(I),
assertz(doenca([X,I])),
format('~n~w foi adicionado aos registros!~n~n',[X]).
請提供一個演示您的問題的[mcve]。從您目前提供的代碼中無法分辨發生了什麼。 – Steven
確定重新發布即可看到所有變量。 – martur94
我認爲你已經靜態定義了'doenca/1'。你應該在文件的頂部有一個': - 動態doenca/1.'行,對於我來說,你有'doenca(X)'和'retract(doenca([X,I] ))在同一個規則體內,這是不可能成功的。有更多的來源嗎? –