It would certainly work to do that, but I wanted to handle user-specified fine-grained predicates. But I was wondering if Scheme actually allows any predicates that are finer-grained than equal?. (There are predicates with narrower scope, like = that only works on numbers, but that's not part of the definition.) I guess you could define one arbitrarily, like a predicate that equates all numbers but otherwise works like eqv?.