使用内置的置换Prolog函数编写排序函数,在Prolog中排序(A,B)。如果B是A的排序版本,则排序函数成立。
% sorted holds if list is sorted
sorted([]).
sorted([A]).
sorted([A,B|T]) :- A=<B, sorted([B|T]).
% sort list holds if A is sorted list of B
sort(A,B) :- permutation(A,B), sorted(B).
问题是:当L中存在重复值时,R不包括这些重复项。
输出:
?- sort([1,4,2,5,4,4,2], X).
X = [1, 2, 4, 5].
如何更改排序功能以使其不会丢失重复项?