[slime-devel] random returning the same value

Stas Boukarev stassats at gmail.com
Mon Nov 30 19:26:06 UTC 2009


Patrick May <patrick.may at mac.com> writes:

> On Dec 6, 2008, at 3:12 AM, Tobias C. Rittweiler wrote:
>> Patrick May <pjm at spe.com> writes:
>> 
>>> Hi,
>>> 
>>> 	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?
(funcall (cdr (assoc '*gensym-counter* (ccl::standard-initial-bindings))))
=> 0

But why do you care?

-- 
With Best Regards, Stas.




More information about the slime-devel mailing list