home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mitsch75.zip
/
scheme-7_5_17-src.zip
/
scheme-7.5.17
/
src
/
runtime
/
gensym.scm
< prev
next >
Wrap
Text File
|
2001-03-21
|
2KB
|
55 lines
#| -*-Scheme-*-
$Id: gensym.scm,v 14.6 2001/03/21 19:15:07 cph Exp $
Copyright (c) 1988-2001 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
|#
;;;; Symbol Generation
;;; package: (runtime gensym)
(declare (usual-integrations))
(define (generate-uninterned-symbol #!optional argument)
(let ((prefix
(cond ((or (default-object? argument) (not argument))
name-prefix)
((string? argument)
argument)
((symbol? argument)
(symbol-name argument))
((exact-nonnegative-integer? argument)
(set! name-counter argument)
name-prefix)
(else
(error:wrong-type-argument argument "symbol or integer"
'GENERATE-UNINTERNED-SYMBOL)))))
(string->uninterned-symbol
(string-append prefix
(number->string
(let ((result name-counter))
(set! name-counter (1+ name-counter))
result))))))
(define name-counter)
(define name-prefix)
(define (initialize-package!)
(set! name-counter 0)
(set! name-prefix "G")
unspecific)