Here's how I would do it:
On Nov 3, 2013, at 10:01 PM, Mikael <mikael.rcv@gmail.com> wrote:
> Dear Marc,
>
> The procedure ordinarily reached as + , can it be reached under some alternative name in code with (declare (fixnum)) ?
(declare (standard-bindings) (fixnum) (not safe))
(define (double1 x)
(+ ;; uses fixnum specific + (i.e. ##fx+)
x
x))
(define (double2 x)
((let () (declare (generic)) +) ;; uses generic +
x
x))
You could also call the procedure ##+, but it is not an exact replacement for + because the error handling is different (try (##+ 1 'foo)) and it must be passed 2 parameters.
Marc
(declare (standard-bindings) (fixnum))(define x 97650736685728012900)
((let () (declare (generic)) +)x1)
$ gscGambit v4.7.0> (load "x.scm")"x.scm"> ,q$ gscGambit v4.7.0> (compile-file "x.scm")"x.o1"> (load "x.o1")*** ERROR IN ##load -- (Argument 1) FIXNUM expected(fx+ 97650736685728012900 1)1>