I would prefer names that use "Equal" rather than "Compare" for functions that test equality.
In C, "compare" conventionally means "return negative if less, 0 if equal, positive if more" comparison.
In particular, compare == 0 for equality, so compare is false for equal.
We should try to fix the existing confusion in our code, between these two quite different types of function, not add to the confusion.
(This, of course, also applies to compare_fn, below.)