public static Object[] sort_vector( Object[] v, procedure p ) { int n = v.Length; for ( int incr= n/2 ; incr != 0 ; incr/=2 ) for ( int i= incr ; i<n ; ++i ) for ( int j= i-incr ; j >= 0 ; j-= incr ) if (p.funcall2( v[j], v[j+incr] ) != bbool.faux) break; else { Object tmp = v[j + incr]; v[j + incr]= v[j]; v[j]= tmp; } return v; }
public static Object eval_funcall_2( procedure fun, Object a0, Object a1 ) { return fun.funcall2( a0, a1 ); }