Marc:
Here's something to think about for later.
I know of no way, at the Scheme level, to debug incorrect declarations of fixnum or flonum. If you run an application interpreted, it just works, which is OK. If you run something compiled in safe mode, then it works whether the declarations are correct or not. And when you run it in unsafe mode then it generally fails with a segmentation fault. The only way I know to debug this type of fault is to compile Gambit and the application itself with - g, run the application inside gdb, then determine (a) what operation is failing and (b) the location of that operation in the scheme code by diagnosing the C output of gsc. Not fun, even for me ;-).
I'l like to suggest the following compilation model for compiling numerics in safe mode:
Declaration: generic, mostly-*
Result: Generates code to determine the types of arguments and do the correct thing, including calling the generic operations if necessary.
Declaration: fixnum, flonum
Result: check the types of arguments, and generate an exception of the arguments do not match the correct types.
I don't think there needs to be any change in unsafe mode.
This way I could debug mistaken declarations without going through gdb.
Brad