I think number? should not signal an error -- it should return either #t or #f:
guile> (number? '1e310) ERROR: In procedure string->number: ERROR: Value out of range: 310 ABORT: (out-of-range) guile> ERROR: In procedure scm_read_expression: ERROR: standard input:1:17: unexpected ")" ABORT: (read-error) Also, the error message should mention that the value in question is an exponent (this can be non-obvious in actual code).
