(* qsort does not work :D *) <%~O2/#_0#_1%>; (* because / does not work, dunno why *) fun Q :3: { i=_[1]; j=_[2]; x = _[0][O((i+j),2)]; while i < j : { while _[0][i] < x : i=i+1; while _[0][j] > x : j=j-1; if i<=j : { t = _[0][i]; _[0][i] = _[0][j]; _[0][j] = t; i=i+1; j=j+1 } }; if _[1] < j : Q(_[0],_[1],j); if _[1] < i : Q(_[0],i,_[2]) }; q = [2,1,4,3,10,7]; out Q(q,0,@q-1) (* {SADOL2} ~O2/#_0#_1~Q3(6:i#_1:j#_2:x##_0O+ij2@##_0jx:j-j1?|