I think in your example you need "sprout": cm> (define counter 0) counter cm> (define (bump-counter) (process repeat 5 do (set! counter (+ counter 1)))) bump-counter cm> (sprout (bump-counter)) cm> counter 5 In straight scheme there are several ways to do this: (do ((i 0 (+ i 1))) ((= i 5)) (set! counter (+ counter 1))) for example.