letrec.scm 767 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. ; Copyright (c) 1993-2008 by Richard Kelsey. See file COPYING.
  2. (define (t1)
  3. (let loop ((x 1))
  4. (if (g x)
  5. (loop (h x))
  6. x)))
  7. (define (t2)
  8. (let loop ((x 1))
  9. (if (g x) x y)))
  10. (define (t3)
  11. (letrec ((loop (lambda (x)
  12. (if #t x (loop x)))))
  13. (loop 4)))
  14. (define (t4)
  15. (letrec ((loop (lambda (x)
  16. (if #t x (loop x))))
  17. (loop2 (lambda (x)
  18. (if x x (loop2 x)))))
  19. (loop 4)))
  20. (define (t5)
  21. (letrec ((loop (lambda (x)
  22. (if #t x (loop x))))
  23. (loop2 (lambda (x)
  24. (if x x (loop2 x)))))
  25. (g (loop 4) (loop2 5))))
  26. (define (t6 y)
  27. (letrec ((loop (if y
  28. (lambda (x) 5)
  29. (lambda (x) 6))))
  30. (loop 4)))
  31. (define (t7 y)
  32. (letrec ((loop (if y
  33. (lambda (x) 5)
  34. (lambda (x) (loop 6)))))
  35. (loop 4)))