#lang racket (require racket/trace) ;; The Collatz conjecture (define (collatz n) (if (= (modulo n 2) 0) (/ n 2) (+ 1 (* n 3)))) ;; generate the series based on Collatz (define (c-series n) (print n) (newline) (if (equal? n 1) 'done (let ((next (collatz n))) (c-series next)))) ;; generate the series based on Collatz (define (c-series2 n) (print n) (newline) (if (equal? n 1) 'done (c-series2 (collatz n)))) ;; various numeric functions (define examples '( (number? 1) (complex? 2+3i) (real? 3.14159) (real? +inf.0) (rational? 1) (integer? 1) (integer? +inf.0) (integer? 2.0) (exact-integer? 2.0) (exact-nonnegative-integer? 0) (exact-nonnegative-integer? -1) (exact-positive-integer? 0) (inexact-real? 3.4) (inexact-real? 3.5) (flonum? 3.4) (double-flonum? 3.4) (double-flonum? 3.4444444444) (single-flonum? 3.4) (zero? 0.0) (positive? 1) (negative? 1) (even? 1) (odd? 1) (exact? 3.14159) (inexact? 3.14159) (inexact->exact 3.14159) ) ) (define (demo) (map (lambda (lst) (list (car lst) (cadr lst) '==> (apply (eval (car lst)) (cdr lst)))) examples))