使用内置的置换 Prolog 函数在 Prolog 中编写排序函数 sort(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].
如何更改排序功能使其不会删除重复项?