		/* Quicksort with difference lists */

sort(l)   => answer where [answer | []] = dsort(l).

dsort([]) => [x|x].

dsort([p | l]) =>  [sorta | tail]
			where
				[a | b] = part(l,p);
				[sorta | [p| sortb]] = dsort(a);
				[sortb | tail] = dsort(b).


part([],p) => [[] | []].

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