Author: iratqq
Date: Tue Feb  3 02:18:52 2009
New Revision: 5807

Modified:
   trunk/scm/util.scm

Log:
* scm/util.scm (*gensym-counter*):
  - New value.
  (gensym):
  - New function.



Modified: trunk/scm/util.scm
==============================================================================
--- trunk/scm/util.scm  (original)
+++ trunk/scm/util.scm  Tue Feb  3 02:18:52 2009
@@ -199,6 +199,15 @@
   (lambda (n)
     (- n 1)))

+(define *gensym-counter* 0)
+(define (gensym . args)
+  (let-optionals* args ((prefix "g"))
+    (set! *gensym-counter* (inc *gensym-counter*))
+    (let ((new (string->symbol (format "~a~X" prefix *gensym-counter*))))
+      (if (symbol-bound? new)
+          (gensym)
+          new))))
+
 ;; TODO: write test
 (define number->symbol
   (compose string->symbol number->string))

Reply via email to