;;; Gensyms for all occasions. Some end with "^"; others are upper case. (define fresh-var (lambda (sym) (string->symbol (string-append (symbol->string sym) "^")))) (define reset-count! (lambda () '?)) (define gen-sym (let ((count -1)) (set! reset-count! (lambda () (set! count -1))) (lambda (str) (set! count (+ count 1)) (fresh-var (string->symbol (string-append str (number->string count)))))))