The origin seems to be providing a comparison function with the adequate signature to libc's `qsort` for the generic type quicksort. But mergesort and heapsort reuse the same signature, although they could also take an array as last argument. Do we really want this functions to be different? Why?