I can understand why it acts that way, since two empty vectors are equivalent for all intents and purposes.
Either way, eqv? and eqv-hash must agree, so one of them has to be changed. The eqv? of empty vectors seems to be false according to R7RS. Except that the section on eqv? is a little ambiguous around exactly this point, so maybe not. On Fri, Nov 4, 2016 at 5:35 PM, Taylor R Campbell <campb...@mumble.net> wrote: > (let ((u (vector)) > (v (vector))) > (list (list 'eq (eq? u v) (eq-hash u) (eq-hash v) > (= (eq-hash u) (eq-hash v))) > (list 'eqv (eqv? u v) (eqv-hash u) (eqv-hash v) > (= (eqv-hash u) (eqv-hash v))))) > ;Value 15: ((eq #f 107689176 107689168 #f) (eqv #t 107689176 107689168 #f)) > > Oops. > > Why do we treat empty vectors as eqv? If we do, eqv-hash needs to be > made to agree. > > _______________________________________________ > MIT-Scheme-devel mailing list > MIT-Scheme-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/mit-scheme-devel >
_______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel