fork(2) download
  1. remove_dups([],[]).
  2. remove_dups([H|T], TT) :- msort(H,SH), contains_dup(SH,T), remove_dups(T, TT).
  3. remove_dups([H|T], [H|TT]) :- msort(H,SH), \+ contains_dup(SH,T), remove_dups(T, TT).
  4.  
  5. contains_dup(_, []) :- fail.
  6. contains_dup(SH, [H|_]) :- msort(H, SH).
  7. contains_dup(SH, [_|T]) :- contains_dup(SH, T).
  8.  
  9. :- remove_dups([[1,2,3], [3,2,1],[0,1,2],[3,1,2], [1,2,0]],X), write(X).
Success #stdin #stdout #stderr 0.02s 6204KB
stdin
Standard input is empty
stdout
[[3, 1, 2], [1, 2, 0]]
stderr