(define (english n) (define low #("one" "two" "three" "four" "five" "six" "seven" "eight" "nine" "ten" "eleven" "twelve" "thirteen" "fourteen" "fifteen" "sixteen" "seventeen" "eighteen" "nineteen")) (define tens #("twenty" "thirty" "fourty" "fifty" "sixty" "seventy" "eighty" "ninety")) (define place #("" "thousand" "million" "billion" "trillion" "quadrillion" "quintillion")) (define (subhundred i) (if (< i 20) (display (vector-ref low (- i 1))) (begin (display (vector-ref tens (- (quotient i 10) 2))) (if (> (remainder i 10) 0) (begin (display "-") (display (vector-ref low (- (remainder i 10) 1))))))) (display " ")) (define (partial i l) (if (> (quotient i 1000) 0) (partial (quotient i 1000) (+ l 1))) (if (> (quotient i 100) 0) (begin (display (vector-ref low (- (quotient (remainder i 1000) 100) 1))) (display " hundred "))) (if (> (remainder i 100) 0) (subhundred (remainder i 100))) (display (vector-ref place l)) (display " ")) (define (translate i) (cond ((< i 0) (display "negative ") (partial (- 0 i) 0)) ((> i 0) (partial i 0)) (else (display "zero"))) (newline)) (translate n))