[slime-devel] random returning the same value

R. Matthew Emerson rme at clozure.com
Mon Nov 30 19:01:28 UTC 2009


On Nov 30, 2009, at 12:45 PM, Patrick May wrote:

> On Dec 6, 2008, at 3:12 AM, Tobias C. Rittweiler wrote:
>> Patrick May <pjm at spe.com> writes:
>> 
>>> 	I'm using Slime in Aquamacs with CCL.  When I evaluate (random
>>> 100) repeatedly in CCL started from a shell, I get a randomly
>>> generated  number between 0 and 99 inclusive.  When I do the same with
>>> C-x C-e  within Slime, I get the same number every time.  (random 100
>>> (make- 
>>> random-state)) gives the same behavior, but (random 100 (make-random-
>>> state t)) works properly.
>>> 
>>> 	Is Slime caching something or have I hosed up my environment?
>> 
>> Sorry for the late response.  CCL's swank backend uses threads by
>> default, and threads inherit values from the global
>> environment. *RANDOM-STATE* probably becomes thread-local automatically
>> in CCL, resulting in the behaviour you described.
>> 
>> It should work when you type in the form at the Slime REPL which
>> evaluates all forms in the same thread.
> 
> 	Almost exactly a year later, I get bit by a similar issue (although it did trigger my memory of this discussion).  Basically, the same thing happens with gensym as with random -- in Slime it returns a symbol with the same name every time.  Is this a ccl issue or a slime issue?  Has anyone got a workaround so that I can run unit tests within slime?

*GENSYM-COUNTER* is thread-loaal in CCL.

Using GENSYM as a shortcut way to generate lisp-wide unique strings therefore does not work.







More information about the slime-devel mailing list