Вот часть моего кода:Как проверить, возвращается ли Prolog false?
find_paths(A, B) :-
path([A], B, Path, 0, Length),
reverse(Path, DirectPath),
printPath(DirectPath),
writef(' with distance of %d\n', [Length]),
("IF PROLOG RETURN FALSE", write('End'); fail).
Все остальные части работают нормально, когда я хотел, чтобы проверить, если он возвращает ложь после получения всех данных из базы данных из цикла, за исключением. «IF PROLOG RETURN FALSE» - это то, где я хотел вставить контрольную часть, но я не знаю, что положить. Я пробовал код ниже, но он не выводит слово «Конец».
find_paths(A, B) :-
path([A], B, Path, 0, Length),
reverse(Path, DirectPath),
printPath(DirectPath),
writef(' with distance of %d\n', [Length]),
fail,
write('End').
'fail' всегда терпит неудачу. Пролог никогда не сможет «написать» («Конец»), поскольку его предыдущая цель никогда не преуспеет. –
Что означает «ЕСЛИ PROLOG RETURN FALSE» означает в этот момент в пункте? Я предполагаю, что вы имеете в виду: «СДЕЛАЙТЕ НЕКОТОРЫЕ ПРОЧИЕ ВОПРОСЫ (или ЗАПРОСЫ), и ЕСЛИ НЕИСПРАВЛЯТЬ ТОГДА, напишите (« Конец »), иначе просто сработайте», и вся статья не работает, в конечном счете, в любом случае? – lurker
Почему вы хотите, чтобы ваш предикат потерпел неудачу, когда он нашел путь и закончил? – lurker