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