Prolog: dividindo uma lista em duas listas (itens únicos / itens duplicados)

Eu tenho tentado dividir uma determinada lista em duas listas diferentes: Única e Duplicada. Por exemplo, se tivermos a lista[1, 1, 2, 3, 3, 4, 5] Eu quero que a lista única seja[2, 4, 5] e duplicar para ser[1, 3]. Não quero que todos os 1s da lista estejam na lista Duplicados. Eu só preciso de um. O código que tenho agora:

compareL([_|[]], Unique, Dup).    
compareL([X3,Y3 | Tail], [X3 | Unique], Dup) :-
    X3 =\= Y3,
    compareL([Y3 | Tail], Unique, Dup). 
compareL([X3,Y3 | Tail], Unique, [X3 | Dup]) :- 
    X3 = Y3,
    skipDups(X3, Tail, Unique, Dup).

skipDups(_, [], Unique, Dup).   
skipDups(X3,[Y3 | Tail], Unique, Dup) :- 
    X3 =\= Y3,
    compareL([Y3 | Tail], Unique, Dup).
skipDups(X3,[Y3 | Tail], Unique, Dup) :-
    X3 = Y3,
    skipDups(X3, Tail, Unique, Dup).

Usando a lista de exemplo acima, se eu corrercompareL([1, 1, 2, 3, 3, 4, 5], Unique, Dup). Eu recebo:

Unique = [2, 4|_G1954],
Dup = [1, 3|_G1948].

Eu não consigo entender porque no final das duas listas eu estou conseguindo_G1954'e'_G1948'. Qualquer ajuda seria apreciada. Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion