aboutsummaryrefslogtreecommitdiffstats
path: root/csc/gensym.csc
blob: 480cbc29fd16f0dc2b775e807a6b93ec0770aa93 (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
26
27
(define-library (csc gensym)
  (export
    gensym
    gensym->int
    gensym=?
    gensym?)
  (import (scheme base))
  (begin


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


    (define (gensym=? s1 s2)
      (= (gensym->int s1) (gensym->int s2)))


    (define *next-id* 0)


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