Mine
public text v1 · immutablefun merge(xs,[]) = xs
| merge([],ys) = ys
| merge(x::xs,y::ys) =
if x < y then x::merge(xs,y::ys)
else y::merge(x::xs,ys);
fun msort([]) = []
| msort([x]) = [x]
| msort(lst) =
let fun loop([],a,b) = merge(msort(a),msort(b))
| loop(x::xs,a,b) = loop(xs,b,x::a)
in loop(lst,[],[]) end;