Я пытался переписать программу поиска в ширину с VIP5 на VIP9, работа почти завершена. Но у меня проблема с одним предикатом.
Компилятор VIP говорит: «Предикат 'main :: search_bdth / 2 (i, i)', который объявлен как" процедура ", на самом деле является" недетерминированным "".
Я новичок в Прологе, и это часть моей первой программы.
class predicates
search_bdth : (string, string).
bdth : (slistlist, string, slist [out]) nondeterm.
show_answer : (slist) determ.
clauses
search_bdth(Start, Finish) :-
bdth([[Start]], Finish, Way),
show_answer(Way).
bdth([[Finish | Tail] | _], Finish, [Finish | Tail]).
bdth([TempWay | OtherWays], Finish, Way) :-
Ways = [ W || prolong(TempWay, W) ],
append(OtherWays, Ways, NewWays),
bdth(NewWays, Finish, Way).
show_answer([_]) :-
!.
show_answer([A, B | Tail]) :-
show_answer([B
Я, кроме вывода, вот так:
a -> b
b -> d
d -> e
е -> с