Hello.
A friend of mine recently discovered strange behavior in gambit interpreter:
$ gsi Gambit Version 4.0 beta 20
(define-structure foo x y) (define a (make-foo 11 22)) a
#<foo #2 x: 11 y: 22>
(foo? a)
#t
(define b (u8vector->object (object->u8vector a))) b
#<foo #3 x: 11 y: 22>
(foo? b)
#f
(define c (u8vector->object (object->u8vector a))) c
#<foo #4 x: 11 y: 22>
(foo? c)
#f
(##vector-ref a 0)
#<type #5 foo>
(##vector-ref b 0)
#<type #6 foo>
(##vector-ref c 0)
#<type #7 foo>
Note, now we have three different types named foo, but can do anything useful only with one of them.