sort(x)= if( x is-<> -> x, x is-{H:T} -> sort( ), length(x) < 2 -> x, x is- -> let( a = sort(< y | y <- T : (y < H)>) , b= sort(< y | y <- T : (y >= H)>) ) in a ^ ^ b ); sort2(f,x)= if( x is-<> -> x, x is-{H:T} -> sort2(f, ), length(x) < 2 -> x, x is- -> let( a = sort2(f,< y | y <- T : (f(y,H) < 0) >) , b= sort2(f,< y | y <- T : (f(y,H) >=0) >) ) in a ^ ^ b );