First try:a skiplist implementation
"Márton Sasvári (IJ/ETH)"
Marton.Sasvari at ericsson.com
Thu Jan 13 08:22:24 PST 2005
Hi,
Brian Rice wrote:
<snip>
>
> There's one issue that could expose a bug later, that you are using
> RandomStream itself instead of calling newSeed: to get a fresh one. That
> could cause contention in the presence of concurrency.
>
That was something I did not understand in 'Set atRandomBy:'. Now it's
clear why not 'RandomStream next' was used.
On the other hand I guess there is a typo in the mentioned method,
namely 'ind:' seems to be 'index:'.
Currently it is:
c@(Set traits) atRandomBy: random
"Collaborate with a RandomStream to provide one of the elements at random."
[| index |
c emptyCheck.
ind: (random seed: c contents size). "<- I do mean this line"
index below: c contents size
do: [| :i | (c contents at: i) ifNotNil: [^ c contents at: i]].
0 below: index
do: [| :i | (c contents at: i) ifNotNil: [^ c contents at: i]].
].
I know it would be more useful to send a diff but I'm in the learning of
CVS yet.
> <snip>
>
> Everything else looks pretty good, although I may spend some time
> cleaning up the control-flow of the larger methods to make them a little
> more clear before checking this into CVS (you don't mind, do you?).
>
Thanks for the comments I will study the cleaned up CVS version.
Marton
More information about the Slate
mailing list