procedure-static-variables


  
 (define some-static 
   (let ((counter 0)) 
     (lambda (x) 
        (set! counter (+ counter x)) 
        counter))) 
  
 (some-static 0) => 0 
 (some-static 1) => 1 
 (some-static 3) => 4 
 (some-static 5) => 9 
 (some-static 7) => 16 
 (some-static 9) => 25 

This is very similar to the simple-iterators idiom or a simple-object idiom.


category-code