With Guile 2.2.6: $ guile-2.2 -c '(ash 1 (ash 1 37))' gmp: overflow in mpz type zsh: abort guile-2.2 -c '(ash 1 (ash 1 37))' $
For shift distances of (ash 1 63) or greater Guile cleanly signals an exception indicating the overflow. The above treatment of a range of smaller (but still stupidly large) shift distances is less than awesome. It would be preferable for Guile to know gmp's limits and cleanly signal an exception, rather than exceed those limits in a way that terminates the process outright. -zefram