(cf compare)
gives
(Fn [Comparable Any -> Number])
but
(cf (fn [v x] (compare v x)) (Fn [Comparable Any -> Number]))
fails the type check.
(Credit: cspent on IRC figured out that the problem was that it was inlining the compare function, and therefore not using the annotation.)