PasteRack.org
Paste # 16209
2014-09-15 17:19:22

Forked from paste # 50946.

Fork as a new paste.

Paste viewed 34 times.


Embed:

do-again example

  1. #lang racket
  2.  
  3. (define x 0)
  4. (define the-continuation #f)
  5.  
  6. (define (do-again)
  7.   (the-continuation #f))
  8.  
  9. (define (func-to-repeat)
  10.   (call/cc (lambda (k) (set! the-continuation k)))
  11.  
  12.   ;; I want to run this chunk of code every time I call (do-again)
  13.   (printf "looping: ~s\n" x)
  14.   (set! x (+ x 1))
  15.   (when (< x 10)
  16.     (do-again)))
  17.  
  18. (func-to-repeat)
  19. (printf "done: ~s\n" x)

=>

looping: 0

looping: 1

looping: 2

looping: 3

looping: 4

looping: 5

looping: 6

looping: 7

looping: 8

looping: 9

done: 10