For anyone interested, on a 64bit installation:
f.scm contains: (define (proc arg) (list 'proc-got-arg: arg))
$ gsc Gambit v4.6.9
(compile-file "f.scm") (load "f.o1") (proc (##encoding->object #xffffffffffffffea))
(proc-got-arg: #<absent>)
(define (proc arg) (list 'proc-got-arg: arg)) (proc (##encoding->object #xffffffffffffffea))
*** ERROR IN (console)@4.1 -- Wrong number of arguments passed to procedure (proc) 1>
In interpreted mode, any absent object passed as argument disappears.
This has the funny consequence that a procedure overlapping ##wr must be compiled,
(define original-wr ##wr)
(set! ##wr (lambda (write-env obj) (original-wr write-env obj)))
(##encoding->object #xffffffffffffffea)
this only works if it's compiled.