aboutsummaryrefslogtreecommitdiffstats
path: root/gensym.csc
blob: a7c30c57cf0ae9330384a69c15382075c13e567a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(define-library (csc gensym)
  (export
    gensym
    gensym=?)
  (import (scheme base))
  (begin


    (define-record-type <gensym>
      (make-gensym id)
      gensym?
      (id gensym-id))


    (define (gensym=? s1 s2)
      (= (gensym-id s1) (gensym-id s2)))


    (define *next-id* 0)


    (define (gensym)
      (let ((sym (make-gensym *next-id*)))
        (set! *next-id* (+ 1 *next-id*))
        sym))))