Posted to tcl by aspect at Wed Jan 15 12:35:58 GMT 2014view raw

  1. ; properly, this should probably simply be:
  2. ; (call-with-current-continuation (lambda (k) (fib-cps x k)))
  3. (define (fib x)
  4. (fib-cps x (lambda (x) x)))
  5.  
  6. (define (fib-cps x k)
  7. (if (<= x 1)
  8. (k 1)
  9. (fib-cps (- x 1)
  10. (lambda (y)
  11. (fib-cps (- x 2)
  12. (lambda (z)
  13. (k (+ y z))))))))
  14.  
  15. (for-each (lambda (x)
  16. (display x)
  17. (display " ")
  18. (display (fib x))
  19. (newline))
  20. '(0 1 2 3 4 5 6 7 8 9 10))
  21.