comparison lisp/cl.el @ 404:2f8bb876ab1d r21-2-32

Import from CVS: tag r21-2-32
author cvs
date Mon, 13 Aug 2007 11:16:07 +0200
parents 74fd4e045ea6
children de805c49cfc1
comparison
equal deleted inserted replaced
403:9f011ab08d48 404:2f8bb876ab1d
315 (while (>= (decf i) 0) (setq v (+ (* v 3) (aref time i)))) 315 (while (>= (decf i) 0) (setq v (+ (* v 3) (aref time i))))
316 v)) 316 v))
317 317
318 (defvar *gensym-counter* (* (logand (cl-random-time) 1023) 100)) 318 (defvar *gensym-counter* (* (logand (cl-random-time) 1023) 100))
319 319
320 (defun gensym (&optional arg)
321 "Generate a new uninterned symbol.
322 The name is made by appending a number to PREFIX, default \"G\"."
323 (let ((prefix (if (stringp arg) arg "G"))
324 (num (if (integerp arg) arg
325 (prog1 *gensym-counter*
326 (setq *gensym-counter* (1+ *gensym-counter*))))))
327 (make-symbol (format "%s%d" prefix num))))
328
329 (defun gentemp (&optional arg)
330 "Generate a new interned symbol with a unique name.
331 The name is made by appending a number to PREFIX, default \"G\"."
332 (let ((prefix (if (stringp arg) arg "G"))
333 name)
334 (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*)))
335 (setq *gensym-counter* (1+ *gensym-counter*)))
336 (intern name)))
320 337
321 ;;; Numbers. 338 ;;; Numbers.
322 339
323 (defun floatp-safe (x) 340 (defun floatp-safe (x)
324 "Return t if OBJECT is a floating point number. 341 "Return t if OBJECT is a floating point number.