If you set a vector with VECTOR-SET! and a string with STRING-SET!, why do you set a pair with SET-CAR! and SET-CDR! instead of CAR-SET! and CDR-SET!. To be totally uniform it should be (PAIR-SET! <pair> <index> <value>) where index is 0 or 1, one of them meaning CAR, and the other meaning CDR. :-)