http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#mapping-of-types says:
In the case of the struct, union and type types, the internal pointer points to a copy of the C data type being represented. When an instance of one of these types is converted from C to Scheme, a block of memory is allocated from the C heap and initialized with the instance and then a foreign object is allocated from the Scheme heap and initialized with the pointer to this copy. [...]
Does this mean that existing foreign objects are immutable?