Paste: sortBy

Author: ks
Mode: text
Date: Mon, 18 Apr 2011 12:20:41
Plain Text |
record WithLesser[T, F](x:T);

[T,F] overload lesser?(a:WithLesser[T,F], b:WithLesser[T,F]) = F(a.x, b.x);

[S, LesserComparator]
sortBy(sequence:S, static LesserComparator) {
    alias T = SequenceElementType(S);
    sort(mapped(
        x => ref Pointer[WithLesser[T, LesserComparator]](&x)^,
        sequence,
    ));
}

main() {
    var a = [1, 2, 3, 4, 5];
    sortBy(a, (x, y) => (-x < -y));
    println(a);
}

New Annotation

Summary:
Author:
Mode:
Body: