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))