TYPE PREFIX(min) (TYPE data[], int len, int (*compare)(TYPE left, TYPE right)) { int i; TYPE smallest = data[0]; for (i = 1; i < len; i++) { if (compare (data[i], smallest) < 0) smallest = data[i]; } return smallest; } // PREFIX(min)