This does not compile on guile 3.0.7, (define (f . l) (let lp2 ((i 0) (s 0) (l l)) (if (and (pair? l) (< i 64)) (lp2 (+ i 1) (if (car l) (logior (ash 1 i) s) s) (cdr l)) s))) While compiling expression: Throw to key `numerical-overflow' with args `("ash" "Numerical ove rflow" #f #f)'.