我有一个问题想问你一些关于代码片段的问题:
insert_pq(State, [], [State]) :- !.
insert_pq(State, [H|Tail], [State, H|Tail]) :-
precedes(State, H).
insert_pq(State, [H|T], [H|Tnew]) :-
insert_pq(State, T, Tnew).
precedes(X, Y) :- X < Y. % < needs to be defined depending on problem
该函数非常清楚地将一个项目添加到优先级队列中。我遇到的问题是第一行中的切断运算符。大概每当调用到达这行代码时,这是查询的唯一可能解决方案,并且函数调用将简单地展开(或者它结束了?),没有必要回溯并搜索另一个解决方案询问。
所以这里的切断是多余的。我的推论正确吗?