The problem is in the usage of internal defines: the definition of v refers to m:
(define (solve-confs-248) (let ((n (number-between 1 8)) (d (number-between 1 256)) ) (define m (expt (+ d 1) n)) (define v (if (> m n) m n)) (define t (+ n m v)) (assert (<= t 248)) (list n d m v t ) ) )
(You can see this when changing ;(define all-confs-248 (bag-of (solve-confs-248))) to (define (run) (bag-of (solve-confs-248))) and running run after loading.)
Internal defines are a mess. They don't behave the same as toplevel defines, and this is, if I'm correct, because of the specification in R5Rs.
See https://webmail.iro.umontreal.ca/pipermail/gambit-list/2005-September/000412...
(So the funny part is that if you compile your file with Gambit, it works, because the compiler is "more permmissive" as Marc puts it.)
Change your code to:
(define (solve-confs-248) (let ((n (number-between 1 8)) (d (number-between 1 256))) (let* ((m (expt (+ d 1) n)) (v (if (> m n) m n)) (t (+ n m v))) (assert (<= t 248)) (list n d m v t ))))
Christian.