(* Carsten Schuermann *) (* Sorting *) let fun split p nil k = k nil nil | split p (h :: t) k = if h < p then split p t (fn l => fn g => k (h :: l) g) else split p t (fn l => fn g => k l (h :: g)) fun sort nil = nil | sort (h :: t) = split h t (fn l => fn g => sort l @ [h] @ sort g) in sort [1,6,3,7,12,5,7,8,4,3,2] end