組み込みの順列 Prolog 関数を使用して、並べ替え関数 sort(A,B) を Prolog に記述します。B が A のソートされたバージョンである場合、sort 関数は成立します。
% 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].
重複を落とさないようにソート機能を変更するにはどうすればよいですか?