The problem it has is that if elements compare equal but don't match then it'll never get down to an array where ~.y has length 1.
Right, of course. Shame on me for being lazy and not bothering to write out *./2 u/\y.
Modern quicksort hybrids ... always use one bit at a time.
I am curious what applications there are that really need a user-specified comparison function (rather than just a sort key, like dyadic /: takes).
---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm