;;; This scheme version is for PLT Scheme's mzscheme, which follows ;;; more closely the language definition than GNU guile does. ;;; mzscheme has the complex (do...) instead of (while ...), but does ;;; have Scheme's (printf ...), albeit with an extremely limited set ;;; of format items, and no field width control. (define GOLDEN-RATIO (/ (+ 1.0 (sqrt 5.0)) 2.0)) (define (Fibonacci) "Print a table of representable Fibonacci sequence values." (let ((hi 1) (lo 1) (n 1) (ratio 0)) (printf "~a ~a~%" n lo) (do () ((>= hi (expt 2 63))) ;loop exit condition (set! n (+ 1 n)) (set! ratio (/ (exact->inexact hi) (exact->inexact lo))) (printf "~a ~a ~a ~a~%" n hi ratio (- ratio GOLDEN-RATIO)) (set! hi (+ lo hi)) (set! lo (- hi lo))))) (Fibonacci) (exit)