racket/collects/tests/mzscheme/oe.ss
2005-05-27 18:56:37 +00:00

43 lines
1.0 KiB
Scheme

(define-values (odd) (lambda (x) (if (zero? x) #f (even (- x 1)))))
(define-values (even) (lambda (x) (if (zero? x) #t (odd (- x 1)))))
(define-values (odd2)
(letrec ([even (lambda (x) (if (zero? x) #t (odd (- x 1))))]
[odd (lambda (x) (if (zero? x) #f (even (- x 1))))])
odd))
(define-values (odd3)
(let ([test (lambda (base other)
(lambda (x) (if (zero? x) base ((other) (- x 1)))))])
(letrec ([odd (test #f (lambda () even))]
[even (test #t (lambda () odd))])
odd)))
(define-values (fib)
(lambda (n)
(if (<= n 1)
1
(+ (fib (- n 1)) (fib (- n 2))))))
(define-values (mutate)
(lambda (n)
(let loop ()
(unless (zero? n)
(set! n (sub1 n))
(loop)))))
(define-values (mutate-evil)
(lambda (n)
(let loop ([n n])
(unless (zero? n)
(set! n (sub1 n))
(loop n)))))
(define-values (c-loop)
(let-values ([(a b c d e f g) (values 1 2 3 4 5 6 7)])
(lambda (n)
(let loop ([n n])
(if (zero? n)
(+ a b c d e f g)
(loop (sub1 n)))))))