John Cowan (on a private e-mail, probably by mistake)
It was indeed a mistake.
answered me that the beginning of the Specification says "It is an error to pass two hash tables that have different comparators or equality predicates to any of the procedures of this SRFI."
It's important to remember the special meaning of "it is an error" in Scheme specifications. It means that no conforming program can depend on any particular result or behavior of the erroneous action, and that implementations can do whatever they like, whether reasonable or unreasonable. In some other standards cultures the phrase used is "undefined behavior".
Yes, I understand that. However, as a rule of thumb, I think the *best* conforming implementation should signal an error in those cases. Unless, of course, the optimize level is set to the maximum value and/or debug is set to the minimum value, in which case the implementation is allowed to skip all checking.
In any case, you convinced me not to rely on eq?-ness of procedures in R6RS.