		/* Naive Quicksort */

qsort([]) => [].
qsort([p|l]) => append(x, [p|y]) 
			  where [a|b] = part(l, p);
				x = qsort(a);
				y = qsort(b).

part([], p) => [[] | []].
part([h|t], p) => if p>h then [[h|a] | b] else [a | [h|b]]
			where
				[a|b] = part(t, p).

append([], x) => x.
append([h|t], y) => [h| append(t, y)].

