Lista je struktura koja je ili prazna ili se sastoji od glave i repa.

Prazna lista opisuje se na sledeći način: []

Glava i rep se u listi odvajaju simbolom | (pipe, na tastaturi veliko ž), u ovakvom zapisu:  [G|[]]

U nastavku je dato nekoliko predikata kojim se opisuju osnovne operacije sa listama. Vrlo često se lista prikazuje kao [a, b, 1, 2, c, d], gde je a glava liste, a lista [b, 1, 2, c, d] je rep liste.

a) Predikat kojim se proverava da li je neka struktura lista

lista([]).
lista([G|R]):-lista(R).

b) Predikat kojim se proverava da li se neki element nalazi u listi

element(X, [X|_]).
element(X, [Y|R]):-element(X, R).

c) Spajanje dve liste

pripoji([], X, X).
pripoji([X|R], Y, [X|Z]):-pripoji(R, Y, Z).

d) Obrtanje liste

obrni([], []).
obrni([X|Xr], Y):-obrni(Xr, Yr), pripoji(Yr, [X], Y).
obrni1(L, OL):-obrni(L, [], OL).
obrni([], OL, OL).
obrni([G|R], S, OL):-obrni(R, [G|S], OL).

е) Brisanje elemenata iz liste. (Prvog u listi.)

brisi(X, [X|R], R).
brisi(X, [Y|R], [Y|R1]):-brisi(X, R, R1).

f) Dodavanje elementa u listu

ubaci(X, L, VL):-brisi(X, VL, L).

g) Permutacija elemenata liste i sortiranje

permutacija([], []).
permutacija([X|L], P):-permutacija(L, L1), ubaci(X, L1, P).
uredjena([X]).
redjena([X|[Y|R]]):-X=<Y, uredjena([Y|R]).
sortiraj(L, SL):-permutacija(L, SL), uredjena(SL).

h) Podlista

podlista(S, L):-pripoji(L1, S, L2), pripoji(L2, L3, L).

i) Broj elemenata i suma elemenata liste

broj_elemenata([], 0).
broj_elemenata([G|R], N):- broj_elemenata(R, N1), N is N1 + 1.
suma_elemenata([], 0).
suma_elemenata([G|R], N):- suma_elemenata(R, N1), N is N1 + G.

j) Quick sort algoritam za sortiranje brojeva

qsort([], []).
qsort([G|R], T):-manji(G, R, LM),
veci(G, R, LV),
qsort(LM, SLM),
qsort(LV, SLV),
pripoji(SLM, [G|SLV], T).
manji(G, [], []).
manji(X, [G|R], [G|R1]):-G=<X, manji(X, R, R1).
manji(X, [G|R], R1):-G>X, manji(X, R, R1).
veci(G, [], []).
veci(X, [G|R], [G|R1]):-G>=X, veci(X, R, R1).
veci(X, [G|R], R1):-G<X, veci(X, R, R1).