declare UnsortedList = [34 7 55 11 18 95 4 23] declare fun {Length Xs} if Xs == nil then 0 else 1 + {Length Xs.2} end end declare fun {Merge Xs Ys} if Xs == nil then Ys else if Ys == nil then Xs else if Xs.1 < Ys.1 then Xs.1 | {Merge Xs.2 Ys} else Ys.1 | {Merge Ys.2 Xs} end end end end declare fun {MergeSort Xs} L={Length Xs} in if L < 2 then Xs else Half=L div 2 in {Merge {MergeSort {List.take Xs Half}} {MergeSort {List.drop Xs Half}}} end end