;; let-optionals* (define (make-counters . args) (let-optionals* args ((seed 0) (step 1)) (let ((x seed)) (values (lambda () (set! x (+ x step))) (lambda () (set! x (- x step))))))) (use srfi-8) ; define-values (define-values (inc dec) (make-counters)) (inc) (dec) (define-values (dec2 inc2) (make-counters 100 -2)) (inc2) (dec2)