randvec = @lambda(len){ @local v, i, t; v = mkvec(len); for(i = 0; i < len; i++) vecset(v, i, cons(i, nil)); for(i = 0; i < len; i++){ @local x, y; x = rand(len); y = rand(len); t = vecref(v, x); vecset(v, x, vecref(v, y)); vecset(v, y, t); } return v; }; mycmp = @lambda(a, b){ @local xa, xb; xa = car(a); xb = car(b); if(xa < xb) return -1; if(xa > xb) return 1; return 0; }; testsort = @lambda(len){ @local v, i; randseed(0); v = randvec(len); sort(v, mycmp); for(i = 0; i < len; i++) if(car(vecref(v, i)) != i){ print("failed"); print(i); } }; testsort(5000);