export function sort$<T, U=T>(x: T[], fc: CompareFunction<T|U> | null=null, fm: MapFunction<T, T|U> | null=null, fs: SwapFunction<T> | null=null): T[] {
  var fc = fc || COMPARE;
  if (!fm && !fs) return x.sort(fc);
  var X  = x.length;
  var fm = fm || IDENTITY;