letrec.scm 798 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey
  3. (define (t1)
  4. (let loop ((x 1))
  5. (if (g x)
  6. (loop (h x))
  7. x)))
  8. (define (t2)
  9. (let loop ((x 1))
  10. (if (g x) x y)))
  11. (define (t3)
  12. (letrec ((loop (lambda (x)
  13. (if #t x (loop x)))))
  14. (loop 4)))
  15. (define (t4)
  16. (letrec ((loop (lambda (x)
  17. (if #t x (loop x))))
  18. (loop2 (lambda (x)
  19. (if x x (loop2 x)))))
  20. (loop 4)))
  21. (define (t5)
  22. (letrec ((loop (lambda (x)
  23. (if #t x (loop x))))
  24. (loop2 (lambda (x)
  25. (if x x (loop2 x)))))
  26. (g (loop 4) (loop2 5))))
  27. (define (t6 y)
  28. (letrec ((loop (if y
  29. (lambda (x) 5)
  30. (lambda (x) 6))))
  31. (loop 4)))
  32. (define (t7 y)
  33. (letrec ((loop (if y
  34. (lambda (x) 5)
  35. (lambda (x) (loop 6)))))
  36. (loop 4)))