Λίστες
Οι λίστες στην Prolog ορίζονται με τη σύνταξη [Head | Tail] όπου
Head είναι το στοιχείο που αποτελεί την κεφαλή της λίστας και
Tail τα υπόλοιπα στοιχεία.
Η σύνταξη αυτή αποτελεί απλώς συντομογραφία για όρους των οποίων το
όνομα είναι η τελεία (.).
Με βάση τον ορισμό των λιστών μπορούμε πολύ εύκολα να ορίσουμε σύνθετους
αλγόριθμους όπως την ταξινόμηση quick sort:
quicksort([X|Xs], Ys) :-
        partition(Xs, X, L, B),
        quicksort(L, Ls),
        quicksort(B, Bs),
        append(Ls, [X | Bs], Ys).
quicksort([], []).
partition([X|Xs], Y, [X|Ls], Bs) :-
        X =< Y,
        partition(Xs, Y, Ls, Bs).
partition([X|Xs], Y, Ls, [X|Bs]) :-
        X > Y,
        partition(Xs, Y, Ls, Bs).
partition([], Y, [], []).
append([], X, X).
append([H | T], X, [H | Z]) :-
        append(T, X, Z).
?- quicksort([4,2,8,12,1,7], X).
X = [1,2,4,7,8,12] ->.
yes